zenn.skin 무료버전 배포중!
자세히보기

Python/Syntax

[Python] itertools (순열, 조합)

koosco! 2022. 12. 21. 07:38

python에서 제공하는 itertools를 사용하면 효율적으로 순열과 조합을 구할 수 있습니다.

 

1. 조합(combinations)

첫번째 파라미터로 iterable 객체를 받고, 두번째 파라미터는 선택할 원소의 개수를 입력받습니다.

from itertools import combinations

A = [2, 1, 3]
for i in combinations(A, 2):
  print(i)

for i in combinations(A, 3):
  print(i)

2. combinations_with_replacement

중복을 허용하여 입력받은 iterable 객체 내 원소로 만들 수 있는 모든 조합을 구할 수 있습니다.

from itertools import combinations_with_replacement

A = [2, 1, 3]
for i in combinations_with_replacement(A, 3):
	print(i)

3. permutations(순열)

from itertools import permutations

A = [2, 1, 3]
for i in permutations(A, 3):
  print(i)

 

4. product, 데카르트곱

product는 2개 이상의 iterable을 입력으로 받아 순열을 만들 수 있는 함수입니다.

A = [2, 1, 3]
for i in product(A):
  print(i)

for i in product(A, repeat=3)
  print(i)

product를 사용하면 값의 중복을 허용하면서 순열을 만들 수 있습니다.

또한 product는 두 개 이상의 iterable을 입력값으로 받을 수 있습니다.

A = [2, 1, 3]
B = ['A', 'B']

for i in product(A, B, repeat=1):
  print(i)

repeat의 수를 늘려주면 입력받은 iterable들을 repeat만큼 사용하게 됩니다.

A = [2, 1, 3]
B = ['A', 'B']

for i in product(A, B, repeat=2):
  print(i)

A = [2, 1, 3]
B = ['A', 'B']
C = ['C', 'D']

for i in product(A, B, C, repeat=1):
  print(i)


백트래킹 기초 문제에서도 사용할 수 있고 한 번씩 쓸 일이 있을 때 사용하기 좋습니다.

dfs로 구현할 일이 있을 때 쓰기 유용합니다.

'Python/Syntax'의 다른글

  • 현재글 [Python] itertools (순열, 조합)

관련글