Come utilizzare la funzione zip() in Python (Combina Iterables)
Scopri come utilizzare la funzione zip() di Python per combinare più iterabili in parallelo. Masterizza le creazioni dei dizionari, decomprimi la logica e gestisci le mancate corrispondenze di lunghezza.
Panoramica
Quando si esegue l'iterazione sui set di dati, spesso sarà necessario elaborare più elenchi correlati in parallelo. Ad esempio, associando un elenco di nomi utente a un elenco di ID utente o abbinando le coordinate dei valori X e Y. Invece di cicli nidificati o di accesso agli elementi utilizzando i contatori di indicizzazione delle liste, Python fornisce l'elegante funzione `zip()`.
La funzione `zip(*iterables)` accetta più iterabili come argomenti e li aggrega, restituendo un iteratore di tuple in cui l'i-esima tupla contiene l'i-esimo elemento da ciascuno degli iterabili di input. Ciò ti consente di scorrere facilmente due o più raccolte simultaneamente con un singolo ciclo "for".
Per impostazione predefinita, `zip()` interrompe la combinazione quando l'iterabile di input più breve viene esaurito. Tutti gli elementi rimanenti negli iterabili più lunghi vengono scartati. Se vuoi accoppiare elementi fino all'esaurimento dell'iterabile più lungo, riempiendo i valori mancanti con un segnaposto, Python fornisce `zip_longest()` nel modulo `itertools` della libreria standard.
Codice e output di esecuzione
Questo script dimostra l'iterazione di elenchi paralleli, la creazione di un dizionario utilizzando zip e la gestione delle mancate corrispondenze utilizzando zip_longest.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]Implementazione passo dopo passo
- Passa gli elenchi multipli o gli iterabili che desideri combinare alla funzione zip().
- Decomprimere le tuple generate in un'istruzione del ciclo for per iterazioni parallele pulite.
- Converti l'oggetto zip in un dizionario utilizzando dict(zip(keys_list,values_list)) per la mappatura.
- Importa itertools.zip_longest per combinare elenchi di lunghezza diversa senza perdere i valori di coda.
Domande frequenti
Come posso "decomprimere" una sequenza compressa di tuple?
È possibile decomprimere una sequenza in elenchi separati utilizzando l'operatore di decompressione *: list(zip(*zipped_tuples)).
zip() duplica gli elementi in memoria?
No, zip() restituisce un iteratore che produce elementi su richiesta, rendendolo estremamente efficiente in termini di memoria.
Argomenti correlati
Scopri come eseguire il looping o l'iterazione di un dizionario Python. Scopri metodi per eseguire il loop su chiavi, valori e coppie chiave-valore con esempi puliti ed eseguibili.
Come unire due elenchi in PythonScopri i modi migliori per unire e combinare due elenchi in Python. Confronta l'operatore più, il metodo di estensione, l'elenco di decompressione e le opzioni della catena.
Risorse Python consigliate
Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.
Funzioni Python
Padroneggiare le funzioni Python. Scopri come scrivere codice riutilizzabile utilizzando def, definire argomenti, restituire valori e comprendere l'ambito a livello locale e globale.
Foglio informativo sulle funzioni del modulo matematico Python
Guida di riferimento rapido per la libreria standard matematica di Python. Impara come utilizzare le funzioni trigonometriche, logaritmiche, di arrotondamento e aritmetiche.
Python vs JavaScript: quale linguaggio di programmazione è il migliore?
Un confronto completo tra Python e JavaScript. Esplora le differenze di sintassi, le prestazioni, i casi d'uso (backend e frontend) ed esempi di codifica.