1

我只是在查看itertools文档,寻找一种摆脱嵌套 for 循环的方法,如下所示:

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

但是,我什么也找不到。没有这个功能吗?我应该只保留嵌套循环吗?

4

2 回答 2

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)
于 2013-10-28T13:12:45.493 回答
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

工作示例。你真正想做的是扁平化一个列表,这实际上包含itertools.

于 2013-10-28T13:44:12.723 回答