如何在Python中扩展/连接两个迭代器

ywa*_*wat 13 python iterator list python-3.x

我希望以有效的方式连接两个迭代器.

假设我们有两个迭代器(在Python3中)

l1 = range(10)      # iterator over 0, 1, ..., 9
l2 = range(10, 20)  # iterator over 10, 11, ..., 19
Run Code Online (Sandbox Code Playgroud)

如果我们将它们转换为列表,就很容易连接起来

y = list(l1) + list(l2)  # 0, 1, ,..., 19
Run Code Online (Sandbox Code Playgroud)

但是,这可能效率不高.

我想做点什么

y_iter = l1 + l2  # this does not work
Run Code Online (Sandbox Code Playgroud)

在Python3中执行此操作的好方法是什么?

Dan*_* D. 28

用途itertools.chain:

from itertools import chain
y_iter = chain(l1, l2)
Run Code Online (Sandbox Code Playgroud)

它产生所有物品l1和它们的所有物品l2.有效地连接所产生项目的顺序.在这个过程中它消耗两者.


Fuj*_*lan 5

您可以使用 itertools 提供的 chain() 函数

itertools.chain()