多个列表上的python迭代器

时间:2013-06-26 17:55:14

标签: python list iterator

我有一个列表列表,希望获得每个列表中每个元素的迭代器。

我的想法是编写一个包含两个变量的类:列表上的迭代器和当前内部列表上的迭代。每当内部列表迭代器引发StopIteration时,我在外部列表迭代器上调用next。我这样做的方式在下一个函数中包含了很多嵌套ifs所以我问你这样做的pythonic方法是什么。

示例:

lists = [[1, 2].__iter__(), [3, 4].__iter__()]

现在我需要一个迭代超过1,2,3和4的迭代器对象。因为我正在使用的列表非常大,所以我只能使用迭代器。

2 个答案:

答案 0 :(得分:4)

使用itertools.chain.from_iterable()

from itertools import chain

for elem in chain.from_iterable(nested_list):

演示:

>>> from itertools import chain
>>> nested_list = [['a', 'b'], ['c', 'd']]
>>> for elem in chain.from_iterable(nested_list):
...     print elem,
... 
a b c d

答案 1 :(得分:1)

如果您使用的是Python 3.x

,请使用izip:izip(*nested)或仅使用'zip'

*运算符是参数解包运算符,它允许元组或列表通过语句“展开”。另一个例子是:

list = (1, 2, 3, 4, 5)

a, *bcd, e = list # a=1, bcd=[2,3,4] and e=5