python itertoos 이용한 조합(경우의 수)구하기

JWW·2020년 12월 2일
0

파이썬 내장 라이브러리인 itertoos를 잘 활용하면 복잡한 코딩을 쉽게 구현할 수 있다.
10줄이상 필요할 수도 있는 코딩량을 2~3줄로 줄여준다고 할까?

잘 활용하면 유용하게 쓰일 수 있으니 알아보자.

먼저 itertoos를 임포트

import itertools

1부터 3이 있는 바구니가 있다고 할때를 가정하고 예시를 확인해보자.

product

ex_1= itertools.product(range(1,4),repeat=2)
print(list(ex_1))

>>[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

range(1,4)는 대상의 범위를 repeat 반복의 횟수를 나타낸다. 위의 코드는
1부터 3까지의 공이들어 있는 두개의 바구니에서 하나씩 공을 꺼낼때의 경우의 수 이다.

permutations

ex_2 = itertools.permutations(range(1,4),2)
print(list(ex_2))

>>[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

숫자의 중첩은 허용되지 않는다. 단 인덱스가 다르다면 허용된다.

combinations

ex_3 = itertools.combinations(range(1,4),2)
print(list(ex_3))

>>[(1, 2), (1, 3), (2, 3)]

우리가 잘 알고 있는 로또와 같은 경우다. 순서와 상관없이 동일한 숫자 조합은 나올 수 없다.

profile
hello world

0개의 댓글