본문으로 바로가기

종종 사용하는 모듈이기 때문에

기록해둡니다.


순열과 조합을 구하기 위해 itertools라는 모듈을 사용합니다.

 

1. 순열

예시

from itertools import permutations

items = ['A', 'B', 'C', 'D']
print(list(map(''.join, permutations(items)))) # items의 모든 원소를 가지고 순열을 만든다. 
print(list(map(''.join, permutations(items, 2)))) # 2개의 원소를 가지고 순열을 만든다

출력

>>['ABCD', 'ABDC', 'ACBD', 'ACDB', 'ADBC', 'ADCB', 'BACD', 'BADC', 'BCAD', 'BCDA', 'BDAC', 'BDCA', 'CABD', 'CADB', 'CBAD', 'CBDA', 'CDAB', 'CDBA', 'DABC', 'DACB', 'DBAC', 'DBCA', 'DCAB', 'DCBA']

>> ['AB', 'AC', 'AD', 'BA', 'BC', 'BD', 'CA', 'CB', 'CD', 'DA', 'DB', 'DC']

 

2. 조합

예시

from itertools import combinations 

items = ['A', 'B', 'C', 'D'] 
for i in range(1, len(items)): # 조합을 만들려는 아이템과 조합의 수를 반드시넘겨줘야한다.
	print(list(map(''.join, combinations(items, i)))) 

출력

>> ['A', 'B', 'C', 'D']
>> ['AB', 'AC', 'AD', 'BC', 'BD', 'CD']
>> ['ABC', 'ABD', 'ACD', 'BCD']