Python: comment itérer sur 2 itérables séquentiellement (pas zip) [dupliquer]
Imaginez que j'ai 2 itérables de tous types, disons par exemple une liste et une chaîne:
a = [1, 2, 3]
b = "abc"
Existe-t-il un moyen concis et convivial pour python d'itérer séquentiellement a et b (pas en parallèle comme avec zip) sans tromper (l'idée ici est que a et b peuvent être tout ce que nous savons juste qu'ils sont itérables)
Donc rien de tel que:
for i in a + list(b):
Idéalement, j'aurais quelque chose:
for i in something(a, b):
print(i)
cela équivaudrait à faire
for i in a:
print(i)
for i in b:
print(i)
Réponses
Le "quelque chose" que vous recherchez est itertools.chain:
from itertools import chain
for i in chain(a, b):
print(i)
1
2
3
a
b
c
Ce que vous recherchez est itertools.chain:https://docs.python.org/3.8/library/itertools.html#itertools.chain
Vous l'utiliseriez comme ceci:
import itertools
a = [1,2,3]
b = "abc"
for i in itertools.chain(a, b):
print(i)
qui produit
1
2
3
a
b
c
itertools.chain () fait l'affaire. Vous devez garder cette bibliothèque à l'esprit lorsque vous recherchez des choses comme celle-ci.