코딩테스트를 위한 파이썬 문법 (5) (built-in functions, itertools)

Jane·2020년 11월 26일
3
post-thumbnail

이 포스팅은 이것이 취업을 위한 코딩테스트다 APPENDIX A 코딩테스트를 위한 파이썬 문법 파트를 읽고 공부한 내용을 정리하는 용도로 작성되었습니다.
APPENDIX A에 수록된 문법 외에 개인적으로 공부한 내용을 추가해 두었으며, 예제는 직접 연습하며 작성하였기에 교재와 다를 수 있습니다.

표준 라이브러리

librarydescription
Built-in Functionsprint(), input()과 같은 기본 입출력 기능부터 sorted()와 같은 정렬 기능을 포함하고 있는 기본 내장 라이브러리
itertools반복되는 형태의 데이터를 처리하는 기능을 제공하는 라이브러리
순열과 조합 라이브러리를 제공
heapq힙(Heap) 기능을 제공하는 라이브러리
우선순위 큐 구현에 사용
bisect이진탐색(Binary Search) 기능을 제공하는 라이브러리
collections덱(deque), 카운터(Counter) 등의 자료구조를 포함하고 있는 라이브러리
math필수적인 수학적 기능을 제공하는 라이브러리
팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 메서드, pi 등의 상수 포함

내장 함수(Built-in functions)

  1. import 명령어 없이 사용할 수 있다.
  2. input(), print(), sum(), min(), max(), eval(), sorted(), sort() 등이 포함된다.

sum()

  • iterable 객체가 입력으로 주어졌을 때 모든 원소의 합을 반환

    iterable 객체: 반복 가능한 객체로 list, dictionary, tuple 등이 이에 해당한다.

min()

  • 매개변수가 2개 이상 들어왔을 때 가장 작은 값을 반환

max()

  • 매개변수가 2개 이상 들어왔을 때 가장 큰 값을 반환

eval()

  • 수식이 문자열 형식으로 들어오면 수식을 계산한 결과를 반환
>>> result = eval("100*(10%7)+5")
>>> result
305

sorted()

  • iterable 객체가 들어왔을 때 정렬된 결과를 반환
>>> data = sorted([5, 6, 9, 0, 3])
>>> data
[0, 3, 5, 6, 9]
  • key 속성을 이용해서 나이가 많은 순으로 정렬
student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
result = sorted(student_tuples, key=lambda student: student[2], reverse = True)
print(result)
# result
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

※ lambda를 처음 보신다면 이 포스팅을 참고하세요 😉
※ 리스트와 같은 iterable 객체는 sort() 메서드가 내장되어 있기 때문에 sorted() 함수를 사용할 필요가 없다.


itertools

  • 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있는 라이브러리

permutations

  • iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우를 계산
from itertools import permutations

fruits = ['🍏', '🍌', '🍓']
result = list(permutations(fruits, 2))

print(result)

재미를 위해 과일을 넣어봤다.

# result
[('🍏', '🍌'), ('🍏', '🍓'), ('🍌', '🍏'), 
('🍌', '🍓'), ('🍓', '🍏'), ('🍓', '🍌')]

※ permutations는 클래스이기 때문에 객체 초기화 이후에는 list로 변환하여 사용해야 한다.

combinations

  • iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우를 계산
from itertools import combinations

fruits = ['🍏', '🍌', '🍓']
result = list(combinations(fruits, 2))

print(result)
# result
[('🍏', '🍌'), ('🍏', '🍓'), ('🍌', '🍓')]

product

  • iterable 객체에서 r개의 데이터를 뽑아 일렬로 나열하는 모든 경우를 계산(단, 원소를 중복하여 뽑음)
from itertools import product

fruits = ['🍏', '🍌', '🍓']
result = list(product(fruits, repeat = 2)) 
# repeat: 중복 허용
# 만약 repeat을 써주지 않는다면 다음과 같은 에러가 발생한다.
# result = list(product(fruits, 2))
# TypeError: 'int' object is not iterable

print(result)
# result
[('🍏', '🍏'), ('🍏', '🍌'), ('🍏', '🍓'), 
('🍌', '🍏'), ('🍌', '🍌'), ('🍌', '🍓'), 
('🍓', '🍏'), ('🍓', '🍌'), ('🍓', '🍓')]

combinations_with_replacement

  • iterable 객체에서 r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우를 계산(단, 원소를 중복하여 뽑음)
from itertools import combinations_with_replacement

fruits = ['🍏', '🍌', '🍓']
result = list(combinations_with_replacement(fruits, 2))

print(result)
# result
[('🍏', '🍏'), ('🍏', '🍌'), ('🍏', '🍓'), 
('🍌', '🍌'), ('🍌', '🍓'), ('🍓', '🍓')]

한 편으로 적기에는 내용이 많아 heapq, bisect, collections 등의 표준 라이브러리는 다음 포스팅에서 설명할게요🥰
이 시리즈가 코딩테스트를 공부하는데 조금이나마 도움이 되셨다면 💚를 눌러주세요😉


Source

0개의 댓글