web-dev-qa-db-fra.com

Comment étendre / concaténer deux itérateurs dans Python

Je veux concaténer deux itérateurs de manière efficace.

Supposons que nous ayons deux itérateurs (en Python3)

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

Si nous les convertissons en listes, il est facile de concaténer comme

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

Cependant, cela peut ne pas être efficace.

Je voudrais faire quelque chose comme

y_iter = l1 + l2  # this does not work

Quelle est la bonne façon de le faire en Python3?

16
ywat

Utilisation itertools.chain :

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

Il renvoie tous les éléments de l1 puis tous les éléments de l2. Concaténation efficace de la séquence d'articles cédés. Dans le processus, il consomme les deux.

33
Dan D.

vous pouvez utiliser la fonction chain () fournie par les outils itertools

itertools.chain ()

1
Fuji Komalan