본문 바로가기

프로그래밍/python

실전에서 자주 쓰이는 표준 라이브러리(2)_itertools 순열 조합

* 이 글은 『이것이 취업을 위한 코딩 테스트다 with 파이썬』 책을 참고해 적었음을 말씀드립니다.


itertools는 반복되는 데이터를 처리하는 기능를 포함하고 있는 라이브러리이다
itertools가 제공하는 클래스 중 대표적으로 쓰이는 클래스는 permutations(순열), combinations(조합)이다

 

 

- from itertools import permutations : 순열

- from itertools import product : 중복 순열

 

# 순열  : 순서가 있는 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열한 것
from itertools import permutations

data = ['A', 'B', 'C']

result = list(permutations(data, 3))  # 모든 순열 구하기
print("3개 순열",result)

 
 
# 중복 순열
from itertools import product

data = ['A', 'B', 'C']

result = list(product(data, repeat=2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용)
print("중복 순열 ", result)

 

3개 순열 [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
중복 순열  [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]

 

 

 

- from itertools import combinations : 조합

- from itertools import combinations_with_replacement : 중복 조합

 

# 조합 : 순서 상관없이 서로 다른 n개에서 서로 다른 r개를 선택하는 것
from itertools import combinations

data = ['A', 'B', 'C']

result = list(combinations(data, 2)) # 2개를 뽑는 모든 조합
print("2개 조합",result)

# 중복 조합
from itertools import combinations_with_replacement

data = ['A', 'B', 'C']

result = list(combinations_with_replacement(data, 2)) # 중복 조합
print("중복 조합 ", result)
 
 

2개 조합 [('A', 'B'), ('A', 'C'), ('B', 'C')]
중복 조합  [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]

 

 

 

[참고자료]


- 『이것이 취업을 위한 코딩 테스트다 with 파이썬』 나동빈. 한빛미디어

- https://docs.python.org/ko/3/library/index.html

 

파이썬 표준 라이브러리 — Python 3.10.2 문서

파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합

docs.python.org