Esegui il bucle di più liste in Python
Questo tutorial spiega come scorrere due liste / tuple contemporaneamente in Python. Useremo zip()
e itertools.zip_longest()
e spiegheremo le differenze tra loro e come usarli. Vedremo anche come il tipo di ritorno zip()
è diverso in Python 2 e 3.
Funzione zip()
in Python 3.x
La funzione zip()
accetta liste/tuple come argomenti e restituisce un oggetto zip
, che è un iteratore di tuple.
Usa zip()
per scorrere due liste
Passa entrambe le liste alla funzione zip()
e usa il bucle for per scorrere l’iteratore dei risultati.
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Produzione:
1 10
2 20
3 30
4 40
Usa zip()
per scorrere due liste con lunghezze diverse
Se le liste hanno lunghezze differenti, zip()
si ferma quando finisce la lista più corta. Vedi il codice qui sotto.
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Produzione:
1 10
2 20
3 30
4 40
Usa itertools.zip_longest()
per scorrere due liste
Se hai bisogno di scorrere due liste fino alla fine di quello più lungo, usa itertools.zip_longest()
. Funziona esattamente come la funzione zip()
tranne per il fatto che si ferma quando finisce l’lista più lungo.
Riempie i valori vuoti con None
e restituisce un iteratore di tuple.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB):
print(a, b)
Produzione:
1 10
2 20
3 30
4 40
5 None
6 None
Il fillvalue
predefinito è None
, ma puoi impostare fillvalue
su qualsiasi valore.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB, fillvalue=0):
print(a, b)
Produzione:
1 10
2 20
3 30
4 40
5 0
6 0
Usare zip()
con liste multiple
zip()
e le sue funzioni simili possono accettare più di due liste.
import itertools
codes = [101, 102, 103]
students = ["James", "Noah", "Olivia"]
grades = [65, 75, 80]
for a, b, c in itertools.zip_longest(codes, students, grades, fillvalue=0):
print(a, b, c)
Produzione:
101 James 65
102 Noah 75
103 Olivia 80
Funzione zip()
in Python 2.x
La funzione zip()
in Python 2.x accetta anche liste/tuple multiple come argomenti ma restituisce una lista di tuple. Funziona bene per liste piccoli, ma se hai liste enormi, dovresti invece usare itertools.izip()
, perché restituisce un iteratore di tuple.
Usa itertools.izip()
per scorrere due liste
import itertools
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in itertools.izip(listA, listB):
print(a, b)
Produzione:
1 10
2 20
3 30
4 40
Articolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python