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

时间:2017-05-22 15:15:59

标签: python list python-3.x iterator

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

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

l1 = range(10)      # iterator over 0, 1, ..., 9
l2 = range(10, 20)  # iterator over 10, 11, ..., 19

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

y = list(l1) + list(l2)  # 0, 1, ,..., 19

然而,这可能效率不高。

我想做点什么

y_iter = l1 + l2  # this does not work

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

2 个答案:

答案 0 :(得分:21)

使用itertools.chain

from itertools import chain
y_iter = chain(l1, l2)

它会生成l1中的所有项目,然后是l2中的所有项目。有效地连接所产生项目的顺序。在这个过程中它消耗两者。

答案 1 :(得分:1)

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

itertools.chain()