영호

[Python] 조합, 순열 (combinations, permutations) 본문

Language/Python

[Python] 조합, 순열 (combinations, permutations)

0h0 2022. 6. 4. 19:39

들어가며

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