Skip to content

Comment zipper deux listes en Python avec facilité

Updated on

Python est bien connu pour sa lisibilité et sa syntaxe élégante. Il est également chargé d'une multitude de fonctions intégrées qui facilitent la vie des développeurs. Parmi celles-ci, on trouve la fonction zip(), un outil polyvalent pour itérer sur plusieurs listes en parallèle. Ce guide vous plongera dans la fonction zip() de Python, en montrant comment parcourir plusieurs listes et créer des dictionnaires à la volée.

Vous souhaitez créer rapidement une visualisation des données à partir d'un DataFrame Pandas en Python sans écrire de code ?

PyGWalker est une bibliothèque Python pour l'analyse exploratoire des données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation des données dans Jupyter Notebook en transformant votre DataFrame pandas (et DataFrame polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.

PyGWalker pour la visualisation des données (opens in a new tab)

Comprendre la fonction zip() de Python

La fonction zip() est une fonction intégrée de Python qui associe des éléments de deux objets itérables ou plus (comme des listes, des tuples ou des ensembles) en tuples. La fonction renvoie un itérateur qui génère ces tuples. Si les itérateurs passés ont des longueurs différentes, l'itérateur ayant le moins d'éléments décide de la longueur de la sortie générée.

liste1 = ["a", "b", "c"]
liste2 = [1, 2, 3]
zippe = zip(liste1, liste2)
print(list(zippe))

Cela affichera :

[('a', 1), ('b', 2), ('c', 3)]

Parcourir en parallèle avec la fonction zip() de Python

Souvent en programmation, il est nécessaire de parcourir deux listes ou plus en parallèle. La fonction zip() offre un moyen simple et efficace de le faire, réduisant considérablement le besoin d'indexation et, par conséquent, le risque d'erreurs.

Considérons deux listes : une contenant les noms des étudiants, et une autre contenant leurs notes respectives. Si vous souhaitez imprimer le nom de chaque étudiant avec sa note, vous pouvez utiliser la fonction zip().

etudiants = ["Alice", "Bob", "Charlie"]
notes = [85, 90, 95]
 
for etudiant, note in zip(etudiants, notes):
    print(f"{etudiant} : {note}")

Création de dictionnaires avec la fonction zip() de Python

La fonction zip() de Python brille par sa capacité à créer des dictionnaires dynamiquement. Les dictionnaires en Python sont des structures de données qui stockent des données sous la forme de paires clé-valeur. Si vous avez deux listes - une avec des clés et une autre avec des valeurs correspondantes - vous pouvez les combiner en un dictionnaire à l'aide de la fonction zip().

cles = ['pomme', 'banane', 'cerise']
valeurs = [1, 2, 3]
dictionnaire_fruits = dict(zip(cles, valeurs))
print(dictionnaire_fruits)

Cela affichera :

{'pomme': 1, 'banane': 2, 'cerise': 3}

Cette fonctionnalité ouvre de nombreuses possibilités pour créer et manipuler des structures de données à la volée, ce qui est particulièrement bénéfique dans l'analyse des données et d'autres applications du monde réel.

Fonction zip() de Python avec des itérables non ordonnés

Alors que les listes sont des collections ordonnées, certaines collections Python comme les ensembles et les dictionnaires sont non ordonnées, ce qui signifie que leurs éléments n'ont pas d'ordre spécifique. Que se passe-t-il si nous utilisons la fonction zip() avec de tels itérables ?

Lorsqu'elle est utilisée avec des collections non ordonnées, la fonction zip() produira toujours des tuples, mais l'ordre de ces tuples dépendra de la façon dont Python ordonne internement les éléments des collections.

set1 = {"pomme", "banane", "cerise"}
set2 = {1, 2, 3}
ensemble_zippe = zip(set1, set2)
print(list(ensemble_zippe))

Rappelez-vous, la sortie peut être différente lors de différentes exécutions car les ensembles sont non ordonnés.


Dans la section précédente, nous avons exploré quelques utilisations courantes de la fonction zip() de Python. Dans cette suite, nous plongerons davantage dans cette fonction polyvalente, en illustrant ses applications dans différents scénarios et en la comparant à d'autres fonctions de Python.

Résoudre des problèmes du monde réel avec la fonction zip() de Python

La fonction zip() de Python peut être un excellent outil pour résoudre différents problèmes de programmation. Que ce soit pour traiter de gros volumes de données ou simplement pour créer des dictionnaires à la volée, la fonction zip() offre souvent une solution élégante.

Considérons un scénario où vous travaillez avec deux listes : l'une contenant des noms de produits, et l'autre, leurs prix respectifs. Si vous souhaitez trouver le produit avec le prix maximum, vous pouvez le faire facilement avec la fonction zip().

produits = ["Pommes", "Bananes", "Cerises"]
prix = [1.5, 0.5, 3.2]
 
# Zippez les deux listes et utilisez la fonction max()
produit_prix_max = max(zip(prix, produits))
print(produit_prix_max)

Le résultat sera le tuple avec le prix maximum, montrant le produit ayant le coût le plus élevé.

Fonction zip() de Python vs fonction enumerate()

Les fonctions zip() et enumerate() sont toutes deux des fonctions intégrées de Python qui traitent les itérables. La fonction zip(), comme nous l'avons vu, est utilisée pour itérer simultanément sur plusieurs itérables, tandis que la fonction enumerate() ajoute un compteur à un itérable et renvoie un objet enumerate.

Bien que ces fonctions puissent sembler similaires, elles ont des utilisations distinctes. La fonction zip() est idéale pour les scénarios où vous devez itérer sur plusieurs listes en parallèle ou créer des dictionnaires dynamiquement. En revanche, la fonction enumerate() brille lorsque vous avez besoin d'un compteur automatique avec les éléments d'une liste, dans des scénarios tels que l'impression de l'indice des éléments ou l'itération sur une liste avec l'indice des éléments.

Fonction zip() de Python pour la création de dictionnaires

Comme nous l'avons vu précédemment, la fonction zip() de Python peut être particulièrement puissante lorsqu'elle est utilisée pour créer des dictionnaires. Cela devient d'autant plus utile lorsqu'on traite de grands ensembles de données où la création manuelle de dictionnaires serait impraticable. La fonction zip() de Python nous permet de construire des dictionnaires dynamiquement, en économisant du temps et des efforts, et en rendant notre code plus lisible et plus efficace.

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
person_dict = dict(zip(names, ages))
print(person_dict)

Cela affichera :

{'Alice': 25, 'Bob': 30, 'Charlie': 35}

Conclusion

Cela conclut notre plongée en profondeur dans la fonction zip() de Python. Que vous parcouriez plusieurs listes en parallèle, créiez des dictionnaires dynamiquement ou essayiez simplement d'écrire un code plus propre et plus efficace, zip() peut être un outil précieux dans votre boîte à outils Python.

FAQ

  1. Qu'est-ce que la fonction zip() de Python ?

    La fonction zip() est une fonction intégrée de Python qui vous permet de parcourir plusieurs listes ou autres objets itérables en parallèle. Elle associe les éléments correspondants de chaque itérable et renvoie un objet zip constitué de tuples.

  2. Comment fonctionne la fonction zip() de Python avec des listes de longueurs différentes ?

    Lorsque la fonction zip() est utilisée avec des listes de longueurs différentes, la longueur de la sortie résultante est déterminée par la liste la plus courte. Les éléments supplémentaires de la liste la plus longue sont simplement ignorés.

  3. La fonction zip() de Python peut-elle être utilisée avec des ensembles et des dictionnaires ?

    Oui, la fonction zip() peut être utilisée avec n'importe quel type d'itérable, y compris des ensembles et des dictionnaires. Cependant, gardez à l'esprit que les ensembles et les dictionnaires sont des collections non ordonnées, donc l'ordre des éléments dans les tuples résultants peut ne pas être prévisible.