假设我们有一个列表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)?
使用 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)]