This question은 주어진 수의 벡터의 데카르트 곱을 계산하는 방법을 묻습니다. 벡터의 수는 미리 알려지고 비교적 작기 때문에 중첩 된 for 루프를 사용하면 쉽게 솔루션을 얻을 수 있습니다.카디 전 곱을 반복적으로 계산하려면 어떻게해야합니까?
이제 (등, 또는 목록의 목록 또는 세트 세트), 선택의 여지가 귀하의 언어로, 벡터의 벡터를 주어진 것으로 가정합니다
l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
내가 계산하도록 요청 된 경우는
[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
나는 재귀를 진행할 것이다. 예를 들어, 빠른 & 더러운 파이썬에서,
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
는 반복적으로
계산하는 쉬운 방법이 있나요? (참고 : 대답은 파이썬에있을 필요가없고, 어쨌든 내가 파이썬 itertools에 this question 같이 작업 잘한다는 것을 알고 있어요.)
예. 참으로 쉽게. 감사. –
코드가 실제로 알고리즘보다 약간 비효율적이라고 생각합니다.; P – Larry
예 ... 알고리즘과 밀접하게 일치하는 다른 버전이 있지만 생각만큼 혼란 스러웠습니다. 아마 어쨌든 그것을 게시 할 수 있습니다 ... –