함수 | 기능 |
내장 함수 | 기본 입출력, 정렬함수 등을 제공 |
itertools | 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공 ex) 순열, 조합 |
heapq | 힙 자료구조를 제공 ex) 우선순위 큐 |
bisect | 이진 탐색(Binary Search) 기능을 제공 |
collections | 덱(deque), 카운터(Counter)등의 자료구조 |
math | 필수적인 수학적인 기능 제공 ex) 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수, 파이(PI) |
#sum()
result = sum([1,2,3,4,5])
#min(), max()
result = min(7,3,5,2)
result = max(7,3,5,2)
#eval()
result = eval("(3+5)*7")
#sorted()
result = sorted([9,1,8,5,4])
result = sorted([9,1,8,5,4], reverse=True)
result = sorted(array, key=lambda x: x[1], reverse = True)
순열과 조합
순열
- 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
- {'A','B','C'}에서 3개를 선택하여 나열하는 경우 : 'ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA'
from itertools import permutations
data = ['A', 'B', 'C']
result = list(permutations(data,3))
print(result)
#실행 결과
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
중복 순열
from itertools import product
data = ['A', 'B', 'C']
result = list(product(data, repeat=2))
print(result)
#실행 결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
조합
- 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것
- {'A','B','C'}에서 순서를 고려하지 않고 두 개를 뽑는 경우: 'AB', 'BC', 'AC'
from itertools import combinations
data = ['A', 'B', 'C']
result = list(combinations(data,2))
print(result)
#실행 결과
[('A', 'B'), ('A', 'C'), ('B', 'C')]
중복 조합
from itertools import combinations_with_replacement
data = ['A', 'B', 'C']
result = list(combinations_with_replacement(data, 2))
print(result)
#실행 결과
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
Counter
- 등장 횟수를 세는 기능을 제공
- 리스트와 같은 반복 가능한(iterable)객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려준다
from collections import Counter
counter = Counter(['red','blue','red','green','blue','blue'])
print(counter['blue'])
print(dict(counter))
#실행 결과
3
{'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)) #최대 공약수
print(lcm(21, 14)) #최소 공배수
#출력결과
7
42