Python/파이썬 함수

[파이썬] itertools 사용하는 법 - 경우의 수

gakko 2022. 1. 20. 13:30

 

1. 경우의 수


  • permutations() - 순열

순열은 순서를 고려해서 뽑는 경우의 수다.

nPr 로 쓰이는데 이를 풀어서 말하면 n개 중 순서를 고려하여 r개를 뽑는 것을 말한다.

 

-예시

num = [2,1,3,4,1]
result = list(itertools.permutations(num, 2))

 

- 결과값

>> [(2, 1), (2, 3), (2, 4), (2, 1), (1, 2), (1, 3), 
  (1, 4), (1, 1), (3, 2), (3, 1), (3, 4), (3, 1), (4, 2), 
  (4, 1), (4, 3), (4, 1), (1, 2), (1, 1), (1, 3), (1, 4)]
  • 1이 2개 있기때문에 중복된 결과가 나온다.

 

 

 

  • combinations() - 조합

조합이라고 하면 nCr 을 많이 떠올릴 것이다.

n개 중에서 순서를 무시하고 단순히 r개를 뽑기만 하는 경우의 수이다.

 

이제 함수를 살펴보자.

itertools.combinations(순회가능한 데이터, 뽑는 수)의 형태이다.

 

- 예시

num = [2,1,3,4,1]
result = list(itertools.combinations(numbers, 2))

 

- 결과

>> [(2, 1), (2, 3), (2, 4), (2, 1), (1, 3), (1, 4), (1, 1), (3, 4), (3, 1), (4, 1)]
  • 겹치는 수가 있기때문에 똑같은 경우가 나온다.

 

 

 

2. 그 외


  • 무한 이터레이터 (cycle, count, repeat)
  • 가장 짧은 입력 시퀀스에 종료되는 이터레이터(accumulate, chain 등등)

더 알아보고 싶다면 아래 파이썬 라이브러리 도큐먼트에 들어가서 확인하길 바란다!

 

파이썬 itertools 확인하기!

 

itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.10.2 문서

 

docs.python.org