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

时间:2013-01-30 23:09:29

标签: python list product cartesian

假设我们有一个列表L。笛卡儿积L x L可以这样计算:

product = [(a,b) for a in L for b in L]

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

1 个答案:

答案 0 :(得分:6)

使用itertools.product()

product = itertools.product(L, repeat=n)

其中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)]