영호
[Python] 조합, 순열 (combinations, permutations) 본문
들어가며
itertools 모듈의 조합, 순열(combinations와 permutations)에 대해 알아보겠습니다.
조합(combinations)
- 반복 가능한 객체에 대해 n개의 원소를 뽑아줍니다.
- 뽑힌 n개의 원소들의 순서는 상관하지 않습니다. 무엇을 뽑았는지를 중요하게 여깁니다.
- ex) [1,2,3]과 [2,3,1]은 같은 경우입니다.
- combinations객체를 반환합니다.
사용법
combinations(iterable, n)
from itertools import combinations
combination_data = [1, 2, 3, 4]
print(combinations(combination_data,2))
# <itertools.combinations object at 0x7f99328ce7c0>
print(list(combinations(combination_data,2)))
# [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
- 처음 찍은 print문은 combinations객체를 반환합니다.
- 그래서 list로의 형 변환이 필요합니다.
순열(permutations)
- 조합과 마찬가지로 반복 가능한 객체에 대해 n개의 원소를 뽑아줍니다.
- 그러나, 순서를 중요하게 여기기 때문에 뽑힌 원소의 내용이 같아도 순서가 다를 경우 다른 경우로 봅니다.
- ex) [1,2,3]과 [2,1,3]을 다르게 여깁니다.
- permutations객체를 반환합니다.
사용법
permutations(iterable, n)
from itertools import combinations, permutations
permutation_data = [1,2,3,4]
print(permutations(permutation_data,2))
# <itertools.permutations object at 0x7f8f76fce7c0>
print(list(permutations(permutation_data,2)))
# [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
- (1,2)와 (2,1) 모두 반환된 것을 볼 수 있습니다.
'Language > Python' 카테고리의 다른 글
[Python] 문자열 뒤집기 - reverse(), s[::-1] (0) | 2022.06.03 |
---|---|
[Python] Set (0) | 2022.06.03 |
[Python] defaultdict란? (0) | 2022.05.17 |
[Python] 파이썬 정렬, lambda사용 (0) | 2022.05.10 |
Comments