Rya*_*son 4 python iterator lazy-evaluation
我将在这里给出一个简化的例子.假设我在python中有一个迭代器,这个迭代器返回的每个对象本身都是可迭代的.我想获取这个迭代器返回的所有对象,并将它们链接到一个长迭代器中.是否有标准实用程序可以实现这一目标?
这是一个人为的例子.
x = iter([ xrange(0,5), xrange(5,10)])
Run Code Online (Sandbox Code Playgroud)
x是一个返回迭代器的迭代器,我想将x返回的所有迭代器链接到一个大迭代器中.在这个例子中这种操作的结果应该等于xrange(0,10),并且它应该被懒惰地评估.
aar*_*ing 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]
Run Code Online (Sandbox Code Playgroud)
如果您的版本不可用(显然,它是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]
Run Code Online (Sandbox Code Playgroud)