Python: come iterare sequenzialmente su 2 iterabili (non zip) [duplicato]
Aug 21 2020
Immagina di avere 2 iterabili di qualsiasi tipo, ad esempio elenco e stringa:
a = [1, 2, 3]
b = "abc"
Esiste un modo conciso compatibile con Python per iterare su aeb in modo sequenziale (non in parallelo come con zip) senza trucchi (l'idea qui è che aeb possono essere qualsiasi cosa sappiamo solo che sono iterabili)
Quindi niente come:
for i in a + list(b):
Idealmente avrei qualcosa:
for i in something(a, b):
print(i)
sarebbe equivalente a fare
for i in a:
print(i)
for i in b:
print(i)
Risposte
1 Jab Aug 21 2020 at 04:46
Il "qualcosa" che stai cercando è itertools.chain:
from itertools import chain
for i in chain(a, b):
print(i)
1
2
3
a
b
c
1 lxop Aug 21 2020 at 04:46
Quello che stai cercando è itertools.chain
:https://docs.python.org/3.8/library/itertools.html#itertools.chain
Lo useresti in questo modo:
import itertools
a = [1,2,3]
b = "abc"
for i in itertools.chain(a, b):
print(i)
che produce
1
2
3
a
b
c
Code-Apprentice Aug 21 2020 at 04:46
itertools.chain () fa il trucco. Dovresti tenere a mente questa libreria quando cerchi cose come questa.