※모든 사진과 자료의 출처는 나동빈 [이것이 취업을 위한 코딩 테스트다] 입니다※
실전에서 유용한 표준 라이브러리
내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수 제공한다.
파이썬 프로그램 작성할 때 없어서는 안 되는 필수적인 기능 포함한다.
itertools : 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들 제공한다.
순혈과 조합 라이브러리는 코딩 테스트에서 자주 사용된다.
heapq : 힙(Heap) 자료구조를 제공한다.
우선순위 큐 기능을 구현하기 위해 사용된다.
bisect : 이진 탐색(Binary Search) 기능을 제공한다.
collections : 덱(deque), 카운터(Counter)등의 유용한 자료구조 포함한다.
math : 필수적인 수학적 기능을 제공한다.
팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi)와 같은 상수를 포함한다.
(자주 사용되는) 내장 함수
#sum()
result = sum([1, 2, 3, 4, 5])
print(result) (출력) 15
#min(), max()
min_result = min(7, 3, 5, 2)
max_result = max(7, 3, 5, 2)
print(min_result, max_result) (출력) 2 7
#eval() 사람의 입장에서 식을 계산해준다.
result = eval("(3+5)*7")
print(result) (출력) 56
#sorted() 정렬한 결과를 반환한다.
result = sorted([9, 1, 8, 5, 4]) 오름차순 (출력)[1, 4, 5, 8, 9]
reverse_result = sorted([9, 1, 8, 5, 4], reverse = True) 내림차순 (출력)[9, 8, 5, 4, 1]
#sorted() with key key 속성으로 정렬기준 명시한다. lambda함수 주로 이용.
array = [('보라돌이', 35), ('뚜비', 75), ('나나', 50)]
result = sorted(array, key=lambda x: x[1], reverse=True) 2번째원소 기준으로, 오름차순
(출력) [('뚜비', 75), ('나나', 50), ('보라돌이', 35)]
순혈과 조합
모든 경우의 수를 고려해야 할 때 어떤 라이브러리 효과적? itertools 라이브러리
순열 : 서로 다른 n개에서 서로 다른 r개 선택하여 일렬로 나열한다
{'A', 'B', 'C'}에서 3개 선택하여 나열 : 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
조합 : 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개 선택한다.
{'A', 'B', 'C'}에서 순서를 고려하지 않고 2개 뽑는경우 : 'AB', 'AC', 'BC'
from itertools import permutations
data = ['A', 'B', 'C'] #데이터 준비 서로 다른 3개에서
result = list(permutations (data, 3)) #모든 순열 구하기 서로 다른 3개 선택하여 일렬로 나열한다.
print(result)
(출력) [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
from itertools import combinations
data = ['A', 'B', 'C'] #데이터 준비 서로 다른 n개에서
result = list(combinations (data, 2)) #2개를 뽑는 모든 조합 구하기 순서에 상관 없이 서로 다른 r개 선택
#1번째인자: 뽑고자하는 데이터, 2번째인자:몇개를 뽑을지 넣어준다.
print(result)
(출력) [('A', 'B'), ('A', 'C'), ('B', 'C')]
중복 순열과 중복 조합
from itertools import product 중복 순열
data = ['A', 'B', 'C'] #데이터 준비
result = list(product (data, repeat=2)) #2개를 뽑는 모든 순열 구하기 (중복 허용)
print(result)
from itertools import combinations_with_replacement 중복 조합
data = ['A', 'B', 'C'] #데이터 준비
result =list(combinations_with_replacement (data, 2)) #2개를 뽑는 모든 조합 구하기(중복 허용)
print(result)
Counter
파이썬 collections 라이브러리의 Counter는 등장 횟수를 세는 기능을 제공한다.
리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때, 내부의 원소가 몇 번씩 등장했는지 알려준다.
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue']) #blue가 등장한 횟수 출력
print(counter['green']) #green가 등장한 횟수 출력
print(dict(counter)) #사전 자료형으로 반환
(출력) {'red': 2, 'blue': 3, 'green' : 1}
최대 공약수와 최소 공배수
최대 공약수는 math 라이브러리의 gcd()함수를 이용한다.
최소 공배수는 두 값을 곱한 값을 최대 공약수로 나눈다.
import math
#최소 공배수(LCM)를 구하는 함수
def lcm(a, b):
return a * b // math.gcd(a, b)
a = 21
b = 14
print(math.gcd(21, 14)) #최대 공약수(GCD) 계산
print(lcm(21, 14)) #최소 공배수(LCM) 계산
'Python' 카테고리의 다른 글
이코테 : 정렬 알고리즘 (Python) (0) | 2020.11.19 |
---|---|
이코테 : DFS/ BFS - 그래프 탐색 알고리즘 (Python) (0) | 2020.11.15 |
이코테 : Python 문법 -4. 함수와 람다 표현식 (0) | 2020.11.11 |
이코테 : Python 문법 - 3. 조건문과 반복문 (0) | 2020.11.10 |
이코테 : Python 문법 -2. 입출력 (0) | 2020.11.10 |