如何为n列表列表创建crossproduct元组?

时间:2016-02-24 04:19:16

标签: python python-3.x pycharm itertools

例如对于[[0,1],[0,1],[0,1]]我想得到000,001 ... 111的元组。当我遍历n个列表的列表时,它没有&#39 ;使用itertools.product

-Dcom.sun.management.jmxremote.port=[rmiregistryport]

从问题中可以明显看出,我是Python的新手。提前致谢。干杯。

2 个答案:

答案 0 :(得分:1)

如果您需要获取list元素的cartesion产品的元组,您可能会稍微更改一下代码。

l = [[0,1],[0,1],[0,1]]
>>> x = []
>>> for i in itertools.product(*l):
...     x.append(i)
... 
>>> x
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]

答案 1 :(得分:0)

itertools.product适合您。文档很清楚,但也许你需要看到它的实际效果:

>>> import itertools
>>> ls = [[0, 1], [0, 1], [0, 1]]
>>> list(itertools.product(*ls))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]

如果您的ls包含相同的可迭代内容,那么您甚至不需要ls。将repeat关键字参数传递给product代替:

>>> list(itertools.product([0, 1], repeat=3))
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]