Comment utiliser la fonction zip() en Python (combiner des itérables)
Apprenez à utiliser la fonction zip() de Python pour combiner plusieurs itérables en parallèle. Maîtrisez les créations de dictionnaires, décompressez la logique et gérez les incompatibilités de longueur.
Aperçu
Lors d’une itération sur des ensembles de données, vous devrez souvent traiter plusieurs listes associées en parallèle. Par exemple, associer une liste de noms d'utilisateur à une liste d'ID d'utilisateur ou faire correspondre les coordonnées des valeurs X et Y. Au lieu de boucles imbriquées ou d'accès aux éléments à l'aide de compteurs d'indexation de liste, Python fournit l'élégante fonction `zip()`.
La fonction `zip(*iterables)` prend plusieurs itérables comme arguments et les agrège, renvoyant un itérateur de tuples où le i-ème tuple contient le i-ème élément de chacun des itérables d'entrée. Cela vous permet de parcourir facilement deux ou plusieurs collections simultanément avec une seule boucle « for ».
Par défaut, `zip()` arrête la combinaison lorsque l'itérable d'entrée le plus court est épuisé. Tous les éléments restants dans les itérables plus longs sont supprimés. Si vous souhaitez associer des éléments jusqu'à ce que l'itérable le plus long soit épuisé, en remplissant les valeurs manquantes avec un espace réservé, Python fournit `zip_longest()` dans le module `itertools` de la bibliothèque standard.
Sortie de code et d'exécution
Ce script montre l'itération de liste parallèle, la création d'un dictionnaire à l'aide de zip et la gestion des incohérences à l'aide de 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')]Mise en œuvre étape par étape
- Transmettez les multiples listes ou itérables que vous souhaitez combiner à la fonction zip().
- Décompressez les tuples générés dans une instruction de boucle for pour des itérations parallèles propres.
- Convertissez l'objet zip en dictionnaire en utilisant dict(zip(keys_list, values_list)) pour le mappage.
- Importez itertools.zip_longest pour combiner des listes de longueurs inégales sans perdre les valeurs de queue.
Foire aux questions
Comment « décompresser » une séquence compressée de tuples ?
Vous pouvez décompresser une séquence dans des listes distinctes à l'aide de l'opérateur de décompression * : list(zip(*zipped_tuples)).
Zip() duplique-t-il les éléments en mémoire ?
Non, zip() renvoie un itérateur qui génère des éléments à la demande, ce qui le rend extrêmement économe en mémoire.
Sujets connexes
Apprenez à parcourir ou parcourir un dictionnaire Python. Découvrez des méthodes pour parcourir des clés, des valeurs et des paires clé-valeur avec des exemples clairs et exécutables.
Comment fusionner deux listes en PythonDécouvrez les meilleures façons de fusionner et de combiner deux listes en Python. Comparez l'opérateur plus, la méthode d'extension, le déballage de liste et les options de chaîne.
Ressources Python recommandées
Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.
Fonctions Python
Maîtrisez les fonctions Python. Apprenez à écrire du code réutilisable à l'aide de def, à définir des arguments, à renvoyer des valeurs et à comprendre la portée localement et globalement.
Aide-mémoire sur les fonctions du module mathématique Python
Guide de référence rapide pour la bibliothèque standard mathématique Python. Apprenez à utiliser les fonctions trigonométriques, logarithmiques, d'arrondi et arithmétiques.
Python vs JavaScript : quel langage de programmation est le meilleur ?
Une comparaison complète entre Python et JavaScript. Explorez les différences de syntaxe, les performances, les cas d'utilisation (backend et frontend) et des exemples de codage.