相关疑难解决方法(0)

如何迭代计算笛卡尔积?

这个问题询问如何计算给定数量向量的笛卡尔乘积.由于向量的数量是预先知道的并且相当小,因此使用嵌套的for循环很容易获得解决方案.

现在假设您以您选择的语言给出了向量(或列表列表或集合等)的向量:

l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
Run Code Online (Sandbox Code Playgroud)

如果我被要求计算其笛卡尔积,那就是

[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
Run Code Online (Sandbox Code Playgroud)

我会继续递归.例如,在快速和肮脏的python中,

def cartesianProduct(aListOfLists):
    if not aListOfLists:
        yield []
    else:
        for item in aListOfLists[0]:
            for product in cartesianProduct(aListOfLists[1:]):
                yield [item] + product
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法可以迭代计算它吗?

(注意:答案不需要在python中,无论如何我都知道在python中,itertools可以更好地完成工作,就像在这个问题中一样.)

language-agnostic iteration algorithm cartesian-product

10
推荐指数
1
解决办法
6100
查看次数