itertools
itertools 란
파이썬 내장 라이브러리로 효율적인 루핑을 위한 이터레이터를 만드는 함수
itertools 대표 함수
- count : 숫자 start로 시작하여 균등 간격의 값을 반환하는 이터레이터 생성
- cycle : 정해져있는 요소를 반복적으로 반환하는 이터레이터 생성
- repeat : 특정 요소를 무한히 혹은 특정 횟수 만큼 반환하는 이터레이터 생성
- accmulate : 요소들의 누적 합을 반환하는 이터레이터 생성
import itertools
data=[1,2,3,4,5,6,7,8,9,10]
print(*itertools.accumulate(data))
>>> 1 3 6 10 15 21 28 36 45 55
- compress : 1인 요소들만 반환하는 이터레이터 생성
- product : 데카르트의 곱 (각각의 값들을 순서쌍으로 이루어진 집합으로 만들기 위한 연산) 을 반환하는 이터레이터 생성
import itertools
for x in itertools.product('abcd', repeat=2):
print(x)
>>> ('a', 'a')
('a', 'b')
('a', 'c')
('a', 'd')
('b', 'a')
('b', 'b')
('b', 'c')
('b', 'd')
('c', 'a')
('c', 'b')
('c', 'c')
('c', 'd')
('d', 'a')
('d', 'b')
('d', 'c')
('d', 'd')
- permutations : 요소들의 중복 및 순서 상관없이 모든 경우의 수를 반환하는 이터레이터 생성
import itertools
for x in itertools.permutations('abcd', 2):
print(x)
>>> ('a', 'b')
('a', 'c')
('a', 'd')
('b', 'a')
('b', 'c')
('b', 'd')
('c', 'a')
('c', 'b')
('c', 'd')
('d', 'a')
('d', 'b')
('d', 'c')
- combinations : 요소들의 중복은 없으나 순서를 따지는 경우의 수를 반환하는 이터레이터 생성
import itertools
for x in itertools.combinations('abcd', 2):
print(x)
>>> ('a', 'b')
('a', 'c')
('a', 'd')
('b', 'c')
('b', 'd')
('c', 'd')
- combinations_with_replacement : 요소들의 중복을 허용하고 순서가 정렬된 경우의 수를 반환하는 이터레이터 생성