Python

[Python] itertools.product - 데카르트 곱

비번변경 2023. 12. 25. 17:15

데카르트 곱 (cartesian product)

곱집합 또는 데카르트 곱(product set, product)은 각 집합의 원소를 성분으로 하는 튜플의 집합이다.

Python에서는 itertools.product 함수로 사용할 수 있는데, 이 글에서 사용 방법을 적어둔다.

 

 

itertools.product

itertools.product 함수는 중첩 for 문과 동등하다. 예로 들어 product(A, B)는 (x, y) for x in A for y in B라고 할 수 있다.

from itertools import product

A = 'xyz'
B = [1, 2 ,3]
print(*product(A, B))

 

 

itertools.product 중복 허용

집합 자신의 곱을 구할 때는 반복 횟수를 지정하는 repeat 매개변수를 전달한다. 가령 아래의 코드는 실행해보면 product(A, A)와 같이 동작하는 것을 확인할 수 있다.

from itertools import product

A = 'xyz'
print(*product(A, repeat=2))

 

다만 repeat 매개변수가 곱을 구할 집합이 하나일 때만 지정할 수 있는 것은 아니다.

from itertools import product

A = 'xyz'
B = [1, 2 ,3]
print(*product(A, B, repeat=2))

두 개 집합 A, B를 두 번 반복한 곱집합을 구하면 실제로 product(A, B, A, B)와 같이 동작하는 것을 확인할 수 있다.

 

 

참고 문서

https://ko.wikipedia.org/wiki/%EA%B3%B1%EC%A7%91%ED%95%A9

https://docs.python.org/ko/3/library/itertools.html#itertools.product

https://velog.io/@hj-yu-code/python-itertools