Python에서 데카르트 곱 얻기
-
itertools
모듈을 사용하여 Python에서 데카르트 곱 얻기 - 목록 이해 방법을 사용하여 Python에서 데카르트 곱 얻기
- 반복 방법을 사용하여 Python에서 데카르트 곱 얻기
이 자습서에서는 Python에서 목록의 데카르트 곱을 얻는 다양한 방법을 배웁니다. 두 집합의 데카르트 곱은 첫 번째 집합의 각 순서쌍의 첫 번째 요소와 두 번째 집합의 두 번째 요소가 있는 모든 가능한 순서쌍의 집합입니다.
Python에서 다음 방법을 사용하여 2D 목록으로 저장된 집합의 데카르트 곱을 찾을 수 있습니다.
itertools
모듈을 사용하여 Python에서 데카르트 곱 얻기
itertools
모듈의 product(*iterables, repeat=1)
메서드는 iterables
를 입력으로 사용하고 데카르트 곱을 출력으로 반환합니다. 데카르트 곱 순서는 제공된 인수 iterables
에 있는 각 집합/목록의 순서가 됩니다. 선택적 키워드 인수 repeat
는 iterables
입력으로 제품을 반복하려는 횟수를 나타냅니다. 그리고 *
는 iterables
인수의 압축을 푸는 데 사용됩니다.
아래 예제 코드는 itertools.product()
메서드를 사용하여 Python에서 데카르트 곱을 가져오는 방법을 보여줍니다.
from itertools import product
mylists = [["a", "b"], [1, 2]]
for elem in product(*mylists):
print(elem)
출력:
('a', 1)
('a', 2)
('b', 1)
('b', 2)
목록 이해 방법을 사용하여 Python에서 데카르트 곱 얻기
목록의 총 수가 알려진 경우 목록 이해 방법을 사용하여 목록의 데카르트 곱을 얻을 수 있습니다.
목록의 수를 알고 있거나 목록의 수가 고정되어 있는 경우 for
루프를 사용하여 각 목록 요소를 반복하여 데카르트 곱을 가져와야 합니다.
아래 예제 코드는 목록의 데카르트 곱을 가져오기 위해 Python에서 목록 이해 방법을 사용하는 방법을 보여줍니다.
mylists = [["a", "b"], [1, 2]]
crt_prd = [(x, y) for x in mylists[0] for y in mylists[1]]
print(crt_prd)
출력:
[('a', 1), ('a', 2), ('b', 1), ('b', 2)]
반복 방법을 사용하여 Python에서 데카르트 곱 얻기
Python에서 데카르트 곱을 얻는 또 다른 방법은 반복 for
루프 접근 방식을 사용하는 것입니다. 위에서 사용한 목록 이해보다 더 나은 접근 방식입니다. 이 방법에서는 데카르트 곱에 대한 목록이나 집합의 수에 대해 걱정할 필요가 없습니다.
따라서 각 목록의 각 요소에 액세스하는 대신 반복적 접근 방식을 사용합니다. 아래 예제 코드는 반복 방법을 사용하여 Python에서 데카르트 곱을 찾는 방법을 보여줍니다.
def get_cart_prd(pools):
result = [[]]
for pool in pools:
result = [x + [y] for x in result for y in pool]
return result
mylists = [["a", "b"], [1, 2, 3]]
print(get_cart_prd(mylists))
출력:
[['a', 1], ['a', 2], ['a', 3], ['b', 1], ['b', 2], ['b', 3]]