permutations
: r개의 데이터를 뽑아서 일렬로 나열하는 모든 경우
combinations
: r개의 데이터를 뽑아서 순서 상관없이 나열하는 모든 경우
product
: r개의 데이터를 뽑아서 일렬로 나열하는데 중복 허용
combinations_with_replacement
: r개의 데이터를 뽑아서 순서 상관없이 나열하는데 중복 허용
from itertools import permutations, combinations, product, combinations_with_replacement
data = ['A', 'B', 'C']
perm = list(permutations(data, 3))
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
comb = list(combinations(data, 3))
[('A', 'B', 'C')]
prod = list(product(data, repeat = 2))
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
comb_w = list(combinations_with_replacement(data, 2))
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]