迭代Python中的第一次迭代

时间:2014-08-04 10:13:13

标签: python loops for-loop nested iteration

是否存在单行或Pythonic(我意识到前者并不一定意味着后者)编写以下嵌套循环的方式?

for i in some_list:
    for j in i:
        # do something

我已经尝试了

import itertools
for i,j in itertools.product(some_list,i):
    # do something

但我在分配错误之前得到了一个参考,我认为这是有道理的。到目前为止,我一直无法找到这个问题的答案......有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:2)

如果您想依次遍历some_list中的每个子列表,可以使用itertools.chain

for j in itertools.chain(*some_list):

一个简短的演示:

>>> import itertools
>>> some_list = [[1, 2], [3, 4]]
>>> for j in itertools.chain(*some_list):
    print j


1
2
3
4

或者有chain.from_iterable

>>> for j in itertools.chain.from_iterable(some_list):
    print j


1
2
3
4

(除了轻微的语法更改之外,请参阅this question了解差异的解释。)

答案 1 :(得分:2)

使用链:

import itertools


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

for i in itertools.chain(*some_list):
    print i
1
2
3
4
3
4
5
6