1. 순열
itertools.permutations(iterable, r=None)
iterable에서 r 길이 만큼 순열을 생성해 반환
r이 주어지지 않으면, 기본값은 iterable의 길이다.
순열 튜플은 iterable의 순서에 기반해서 만들어진다.
즉, 값이 아닌 위치를 기준으로 순열이 생성된다.
2. 조합
itertools.combinations(iterable, r)
iterable에서 r 길이 만큼 조합을 생성
조합 튜플은 iterable의 순서에 기반해서 만들어진다.
즉, 값이 아닌 위치를 기준으로 조합이 생성된다.
from itertools import product
lst=[[1, 2], [4, 5], [7, 8]]
print(list(product(*lst)))
데카르트 곱
위의 combinations와 다른 점은 여러 개의 리스트를 넣을 수 있다.
[(1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8)]가 출력된다.
# [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
print(list(product(range(2), repeat=3)))
#[(0,), (1,)]
print(list(product(range(2)))
선택 옵션 repeat를 넣었을 때와 안 넣었을 때
repeat는 반복 횟수
from itertools import combinations_with_replacement
itertools.combinations_with_replacement(iterable, r)
중복 조합
nHr = (n+r-1)Cr = n!/r!(n-r)!
튜플 형태로 반환
참고 👇
https://docs.python.org/ko/3/library/itertools.html#itertools.product
반응형
'Languages > Python' 카테고리의 다른 글
time (0) | 2021.12.30 |
---|---|
*(packing / unpacking) (0) | 2021.09.16 |
reduce(function, iterable[, initializer]) (0) | 2021.06.23 |
deque (0) | 2021.05.27 |
딕셔너리 (0) | 2021.05.04 |