这个问题询问如何计算给定数量向量的笛卡尔积。由于向量的数量是预先知道的并且相当少,因此使用嵌套的 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], ... ]
我会继续递归。例如,在 quick&dirty python 中,
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
有没有一种简单的方法来迭代计算它?
(注意:答案不需要在 python 中,无论如何我知道在 python 中 itertools 做得更好,就像在这个问题中一样。)