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.