Python:计算列表的笛卡尔幂的最短方法

Chi*_*nke 4 python product list cartesian

假设我们有一个清单L.笛卡儿积L x L可以这样计算:

product = [(a,b) for a in L for b in L]
Run Code Online (Sandbox Code Playgroud)

如何L x L x L x ... x L以短而有效的方式计算笛卡尔幂(n次,对于给定的n)?

Mar*_*ers 7

使用itertools.product():

product = itertools.product(L, repeat=n)
Run Code Online (Sandbox Code Playgroud)

product现在在哪里是可迭代的; list(product)如果要将其实现为完整列表,请调用:

>>> from itertools import product
>>> list(product(range(3), repeat=2))
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
Run Code Online (Sandbox Code Playgroud)