데이터 분석/python
itertools 순열/조합
fullfish
2025. 10. 13. 10:10
import itertools
조합 (combinations)
from itertools import combinations
arr = ['A', 'B', 'C']
result = list(combinations(arr, 2))
print(result) # [('A', 'B'), ('A', 'C'), ('B', 'C')]
중복 조합 (combinations_with_replacement)
from itertools import combinations_with_replacement
arr = ['A', 'B', 'C']
result = list(combinations_with_replacement(arr, 2))
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
순열 (permutations)
from itertools import permutations
arr = ['A', 'B', 'C']
result = list(permutations(arr, 2))
print(result)
# [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
중복 순열 (product)
from itertools import product
arr = ['A', 'B', 'C']
result = list(product(arr, repeat=2))
print(result)
# [('A', 'A'), ('A', 'B'), ('A', 'C'),
# ('B', 'A'), ('B', 'B'), ('B', 'C'),
# ('C', 'A'), ('C', 'B'), ('C', 'C')]
# 여러 리스트 동시에
for x, y in product([1, 2], ['A', 'B']):
print(x, y)
# (1, 'A')
# (1, 'B')
# (2, 'A')
# (2, 'B')
문자열 합치기
[''.join(t) for t in result]
# ['AB', 'AC', 'BA', 'BC', 'CA', 'CB']
이터레이터(iterator)
from itertools import combinations
result = combinations(["a", "b", "c"], 2)
a = list(result)
b = ["".join(i) for i in result]
print(b) # []
# itertools.combinations() 가 반환하는 건 리스트가 아니라 “이터레이터(iterator)
# 한 번 순회하면 내부 데이터가 소진