我知道你可以用这里发布的方式获取列表的成对交叉乘积:Python 中的成对交叉积
但我想取一个列表L和一个正整数n,并返回L和它自己的叉积n次。有没有内置的方法可以做到这一点,或者我只需要迭代成对的叉积?
(编辑:"笛卡尔乘积")
您正在寻找itertools.product
:
输入可迭代项的笛卡尔乘积。
等效于生成器表达式中的嵌套for循环。例如乘积(A,B)返回与((x,y)对于A中的x对于B中的y)相同的结果。
嵌套的循环就像带有最右边元素的里程表一样循环在每一次迭代中前进。这个模式创建了一个词典排序,以便如果对输入的可迭代项进行排序元组是按排序顺序发出的。
要计算可迭代项与自身的乘积,请指定数字具有可选repeat关键字参数的重复次数。例如乘积(A,重复=4)表示与乘积(A、A、A,A)相同。
所以你只需要做
itertools.product(L, repeat=n)