Itertools:`for a in b:for c in b`

时间:2013-10-28 13:11:15

标签: python nested-loops

我只是浏览itertools文档,寻找摆脱嵌套for循环的方法:

for a in b:
    for c in b:
        <statement>

但是,我找不到任何东西。这是不是有功能?我应该保留嵌套循环吗?

2 个答案:

答案 0 :(得分:4)

是的。它被称为itertools.product

例如:

import itertools

for item in itertools.product([0, 1], repeat = 2):
    print item

<强>输出

(0, 0)
(0, 1)
(1, 0)
(1, 1)

相当于

b = [0, 1]
for a in b:
    for c in b:
        print (a, c)

答案 1 :(得分:4)

您可以使用chain.from iterable

from itertools import chain

b = [[1, 2, 3], [4, 5, 6]]

for i in chain.from_iterable(b):
    print i

理想情况下,b具有所有值。所以这转化为:

for a in b:
    for c in a:
        print c

工作example。您真正要做的是展平一个列表,这实际上包含在recipes for itertools中。