如果python迭代器返回可迭代对象,我如何将这些对象链接到一个大迭代器?

我将在这里给出一个简化的例子.假设我在python中有一个迭代器,这个迭代器返回的每个对象本身都是可迭代的.我想获取这个迭代器返回的所有对象,并将它们链接到一个长迭代器中.是否有标准实用程序可以实现这一目标?

这是一个人为的例子.

x = iter([ xrange(0,5), xrange(5,10)])

x是一个返回迭代器的迭代器,我想将x返回的所有迭代器链接到一个大的迭代器中.这个例子中的这种操作的结果应该是
相当于xrange(0,10),它应该被懒惰地评估.

最佳答案
你可以使用itertools.chain.from_iterable

>>> import itertools
>>> x = iter([ xrange(0,5), xrange(5,10)])
>>> a = itertools.chain.from_iterable(x)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

如果您的版本不可用(显然,它是2.6中的新功能),您可以手动执行:

>>> x = iter([ xrange(0,5), xrange(5,10)])
>>> a = (i for subiter in x for i in subiter)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

转载注明原文:如果python迭代器返回可迭代对象,我如何将这些对象链接到一个大迭代器? - 代码日志