Questo può essere fatto con itertools.chain
:
import itertools
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
for i in itertools.chain(l1, l2):
print(i, end = " ")
che stamperà:
1 2 3 4 5 6 7 8
Come per la documentazione, chain
esegue le seguenti operazioni:
Fai iteratore che restituisce elementi dal primo iterabile fino a quando non è exh spossato, quindi procede al successivo iterabile, fino a quando tutti i iterables sono esauriti.
Se avete i vostri elenchi in un elenco, itertools.chain.from_iterable
è disponibile:
l = [l1, l2]
for i in itertools.chain.from_iterable(l):
print(i, end= " ")
che produce lo stesso risultato.
Se non si desidera importare un modulo per questo, scrivendo una funzione per esso è abbastanza straight-forward:
def custom_chain(*it):
for iterab in it:
yield from iterab
Questo richiede Python 3, per Python 2, appena yield
indietro utilizzando un ciclo:
def custom_chain(*it):
for iterab in it:
for val in iterab:
yield val
in aggiunta alla precedente, Python 3.5
con le sue generalizzazioni disimballaggio estese, permette anche di disimballaggio nella lista letterale:
for i in [*l1, *l2]:
print(i, end=' ')
sebbene questo sia leggermente più veloce di l1 + l2
costruisce ancora un elenco che viene quindi gettato; prendilo solo come soluzione finale.