원소 개수가 개인 조합 생성
import itertools
example = ['A', 'B', 'C', 'D']
ex_comb = list(itertools.combinations(example, 2))
print(ex_comb)
# [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
원소 개수가 개인 순열 생성
import itertools
example = ['A', 'B', 'C', 'D']
ex_perm = list(itertools.permutations(example, 2))
print(ex_perm)
# [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'A'), ('B', 'C'), ('B', 'D'), ('C', 'A'),
# ('C', 'B'), ('C', 'D'), ('D', 'A'), ('D', 'B'), ('D', 'C')]
데카르트 곱, 중복 순열
import itertools
example = ['A', 'B', 'C', 'D']
ex_prd1 = list(itertools.product(example, repeat=2))
print(ex_prd1)
# [('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')]
# a와 b의 모든 쌍을 생성
a = ['A', 'B']
b = [1, 2]
ex_prd2 = list(itertools.product(a, b, repeat=1))
print(ex_prd2)
# [('A', 1), ('A', 2), ('B', 1), ('B', 2)]
# a, b, c의 모든 쌍 생성
c = ['가', '나']
ex_prd3 = list(itertools.product(a, b, c, repeat=1))
print(ex_prd3)
# [('A', 1, '가'), ('A', 1, '나'), ('A', 2, '가'), ('A', 2, '나'), ('B', 1, '가'),
# ('B', 1, '나'), ('B', 2, '가'), ('B', 2, '나')]
원소 개수가 2개인 중복 조합 생성
import itertools
example = ['A', 'B', 'C', 'D']
ex_comb_replace = list(itertools.combinations_with_replacement(example, 2))
print(ex_comb_replace)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'B'), ('B', 'C'), ('B', 'D'),
# ('C', 'C'), ('C', 'D'), ('D', 'D')]