파이썬 내장 라이브러리인 itertoos를 잘 활용하면 복잡한 코딩을 쉽게 구현할 수 있다.
10줄이상 필요할 수도 있는 코딩량을 2~3줄로 줄여준다고 할까?
잘 활용하면 유용하게 쓰일 수 있으니 알아보자.
먼저 itertoos를 임포트
import itertools
1부터 3이 있는 바구니가 있다고 할때를 가정하고 예시를 확인해보자.
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까지의 공이들어 있는 두개의 바구니에서 하나씩 공을 꺼낼때의 경우의 수 이다.
ex_2 = itertools.permutations(range(1,4),2)
print(list(ex_2))
>>[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
숫자의 중첩은 허용되지 않는다. 단 인덱스가 다르다면 허용된다.
ex_3 = itertools.combinations(range(1,4),2)
print(list(ex_3))
>>[(1, 2), (1, 3), (2, 3)]
우리가 잘 알고 있는 로또와 같은 경우다. 순서와 상관없이 동일한 숫자 조합은 나올 수 없다.