미식가의 개발 일기

[파이썬] itertools 순열과 조합 본문

Python

[파이썬] itertools 순열과 조합

대체불가 핫걸 2024. 7. 11. 18:56

순열

from itertools import permutations

vlist = [10, 20, 30] # 2차원 리스트도 가능
permut = list(permutations(vlist, len(vlist)))
print(permut) -> [(10, 20, 30), (10, 30, 20), (20, 10, 30), (20, 30, 10), (30, 10, 20), (30, 20, 10)]

→ permutations를 list()로 감싸줘야 하는 이유는?

permutations는 iterable객체로 반복 가능한 객체이다. 즉, 반복문을 사용하여 그 안에 있는 순열들을 하나씩 가져올 수 있으나 명시적으로 iterable한 형태(열거형 자료형)로 변환하지 않으면 순열을 직접적으로 확인할 수는 없다.

 

 

중복 순열

from itertools import product

vlist = [10, 20] 
p = list(product(vlist, repeat=3)) 
print(p) -> [(10, 10, 10), (10, 10, 20), (10, 20, 10), (10, 20, 20), (20, 10, 10), (20, 10, 20), (20, 20, 10), (20, 20, 20)]

 

 

조합

from itertools import combinations

vlist = [10, 20, 30]
combi = list(combinations(vlist, len(vlist)))
print(combi)
ans = []
for combi in combinations(vlist, len(vlist)):
	ans.append(sum(combi))

→ 각 조합의 합 구하기

 

 

 

중복 조합

from itertools import combinations_with_replacement

vlist = [10, 20]
combs = list(combinations_with_replacement(vlist, 2))
반응형