How to extend / concatenate two iterators in Python

I want to combine two iterators efficiently.

Suppose we have two iterators (in Python3)

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

      

If we convert them to lists, it is easy to concatenate like

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

      

However, this may not be effective.

I would like to do something like

y_iter = l1 + l2  # this does not work

      

What's a good way to do this in Python3?

+3


source to share


2 answers


Use itertools.chain

:

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

      



It outputs all items from l1

and all items from l2

. Effectively concatenate a sequence of ceded items. In the process, he consumes both.

+13


source


you can use the chain () function provided by itertools



itertools.chain ()

+1


source







All Articles