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