【问题标题】:cross product in python of arbitrarily many lists任意多个列表的python中的叉积
【发布时间】:2013-07-12 21:10:12
【问题描述】:

我知道您可以通过此处发布的方式获取列表的成对叉积:Pairwise crossproduct in Python

但我想获取一个列表 L 和一个正整数 n 并返回 L 与其自身 n 次的叉积。是否有内置的方法可以做到这一点,或者我只需要迭代成对的交叉产品?

(对于那些只使用全能高中数学老师传授给他们的神圣术语的人来说,是“笛卡尔积”......)

【问题讨论】:

标签: python list cartesian-product cross-product


【解决方案1】:

您正在寻找itertools.product:

输入迭代的笛卡尔积。

相当于生成器表达式中的嵌套 for 循环。例如, product(A, B) 返回的结果与 ((x,y) for x in A for y in B) 相同。

嵌套循环像里程表一样循环,最右边的元素 在每次迭代中推进。这种模式创建了一个字典 排序,以便如果输入的可迭代项已排序,则产品 元组按排序顺序发出。

要计算可迭代对象与自身的乘积,请指定数字 带有可选的重复关键字参数的重复次数。例如, product(A, repeat=4) 和 product(A, A, A, A) 意思一样。

所以你只需要这样做

itertools.product(L, repeat=n)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2013-10-06
    • 2015-12-16
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多