例如对于[[0,1],[0,1],[0,1]]我想得到000,001 ... 111的元组。当我遍历n个列表的列表时,它没有&#39 ;使用itertools.product
-Dcom.sun.management.jmxremote.port=[rmiregistryport]
从问题中可以明显看出,我是Python的新手。提前致谢。干杯。
答案 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)]