집합에서 곱집합 또는 데카르트 곱은 각 집합의 원소를 성분으로 하는 튜플들의 집합을 말한다.
쉽게 말해, 두 집합 A = {1, 2}, B = {3, 4}가 있을 때 A의 원소와 B의 원소를 곱해 나올 수 있는 모든 경우의 수를 담고 있는 집합 {3, 4, 6, 8}이다.
경우의 수는 사칙연산으로 쉽게 구할 수 있지만, 집합을 구하기 위해서는 itertools 라이브러리의 product를 사용한다.
순열과 조합을 구하는 permutations, combinations과 사용법은 동일하다.
product(A, B)로 A, B에 iterable한 객체를 전달하면 A와 B의 원소들을 가지고 만들 수 있는 모든 경우의 수를 보여준다.
다음은 숫자 리스트와 문자열로 product를 사용한 예이다.
의도한 바대로 [1, 2, 3]과 'ab'를 사용해 만들 수 있는 모든 조합을 보여주고 있다.
product에는 repeat이라는 파라미터가 존재하는데, 이를 사용한 예시는 다음과 같다.
range(1, 5) 즉, [1, 2, 3, 4]라는 집합이 2개(=repeat) 있다는 가정하에 곱집합을 생성한다.
repeat=3이면 [1, 2, 3, 4]라는 집합이 3개 있을 때 가능한 곱집합을 보여준다.
리스트를 사용해 product를 사용했을 때와 같은 결과를 보여주는 것을 알 수 있다.
반응형