Comment utiliser la fonction zip dans Python

Comment utiliser la fonction zip dans Python
Cet article couvrira un guide sur la fonction «Zip» disponible dans la bibliothèque de modules standard de Python. Cette méthode vous permet de combiner et de jumeler des éléments de multiples objets itérables. Vous pouvez ensuite exécuter une logique supplémentaire sur ces paires. Dans de nombreux cas, l'utilisation d'une fonction «zip» est beaucoup plus efficace et plus propre que d'utiliser plusieurs boucles «pour» imbriquées.

À propos de la fonction zip

Comme indiqué précédemment, la fonction «zip» est utilisée pour créer des paires à partir d'éléments de plusieurs objets itérables. Considérez l'exemple ci-dessous pour comprendre la syntaxe de base et l'utilisation de la fonction zip:

list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat"]
zipped = zip (list1, list2)
Imprimer (liste (zippé))

Les deux premières instructions de l'échantillon de code ci-dessus définissent deux listes contenant certains éléments. Ensuite, la fonction «zip» est utilisée en passant les variables «list1» et «list2» comme arguments. Ceci est la syntaxe principale de la fonction «zip». Il vous suffit de passer des listes ou d'autres itérables ordonnés valides comme arguments dont vous souhaitez combiner les éléments. Enfin, l'instruction PRINT est utilisée pour obtenir la sortie de la variable «zippé». Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

Notez que la fonction «zip» renvoie un objet de type «zip» et non une liste. Vous devez le convertir en un type itérable, comme indiqué dans la déclaration d'impression ci-dessus.

En termes simples, la fonction «zip» ramasse des éléments du même index à partir de deux listes et les combine en paire dans un tuple. Ainsi, le 0ème élément de "List1" est combiné avec le 0ème élément de "List2", le 1er élément de "List1" est combiné avec le 1er élément de "List2" et ainsi de suite. La fonction zip se déplace de gauche à droite et le tuple contenant des éléments appariés a le même indice que les éléments stockés en eux.

Utilisation de zip lorsque les iterables n'ont pas le même nombre d'éléments

Dans l'exemple indiqué ci-dessus, les deux listes ont le nombre égal d'éléments. Dans le cas où vous traitez avec un code où les deux listes n'ont pas le même nombre d'éléments, la fonction «Zip» s'arrêtera au dernier élément de la liste ayant le plus grand nombre d'éléments.

Dans l'exemple ci-dessous, la fonction «zip» s'arrêtera à l'élément «C», quelle que soit «List2» en ayant un autre élément.

list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
zipped = zip (list1, list2)
Imprimer (liste (zippé))

Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

Vous pouvez utiliser plus de deux itérables lors de l'utilisation de la fonction zip

Habituellement, la fonction «zip» est utilisée pour comparer deux objets itérables. Cependant, vous pouvez transmettre n'importe quel nombre d'itérables comme arguments à la fonction «zip». Le principe de l'arrêt au dernier élément de la liste la plus courte sera toujours applicable.

list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
zipped = zip (list1, list2, list3)
Imprimer (liste (zippé))

Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante en conséquence:

[('A', 'Apple', '5'), ('B', 'Ball', '3')]]

Création de listes individuelles à partir d'un objet de type zip

Si vous avez déjà un objet «zip», vous pouvez l'utiliser pour repeupler les listes individuelles qui ont été utilisées plus tôt lorsque la fonction zip a été appelée pour la première fois.

list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
zipped = zip (list1, list2, list3)
l1, l2, l3 = zip (* zippé)
Imprimer (liste (L1), liste (L2), liste (L3))

Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante en conséquence:

['A', 'B'] ['Apple', 'Ball'] ['5', '3']

Dans l'échantillon de code ci-dessus, l'objet «zip» est dégonflé à l'aide de l'opérateur «*». Les résultats dégonflés sont ensuite introduits dans une autre fonction d'appel à zip qui crée des listes originales. Notez que vous ne pouvez pas récupérer tous les éléments dans les listes originales si des listes de longueur inégale ont été utilisées lorsque l'objet «zip» a été créé la première fois.

Utilisation de zip lorsque vous voulez garder les éléments du plus long

Dans plusieurs exemples ci-dessus, vous avez peut-être observé que la fonction «zip» par défaut s'arrête au dernier élément de l'itérable le plus court. Et si vous voulez qu'il continue d'itréger jusqu'à ce qu'il atteigne le dernier élément de la plus longue itérable?

Dans un tel cas, vous devrez utiliser la méthode «Zip_Longest ()» du module «Itertools» de Python. Il fonctionne de la même manière que la fonction «zip», avec une petite différence qu'il s'arrête au dernier élément du type itérable le plus long.

à partir d'Itertools Importer Zip_Longest
list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
zipped = zip_langest (list1, list2, list3)
Imprimer (liste (zippé))

Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante en conséquence:

[('A', 'Apple', '5'), ('B', 'Ball', '3'), ('C', 'Cat', Aucun), (Aucun, 'Doll', aucun) ]]

Les valeurs manquantes sont remplies comme des objets de type «Aucun». Vous pouvez également fournir votre propre valeur à remplir en transmettant un argument supplémentaire de «remplissage» à la méthode «zip_longest».

à partir d'Itertools Importer Zip_Longest
list1 = ["a", "b", "c"]
list2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
zipped = zip_langest (list1, list2, list3, fillValue = "my_value")
Imprimer (liste (zippé))

Après avoir exécuté l'échantillon de code mentionné ci-dessus, vous devez obtenir la sortie suivante en conséquence:

[('A', 'Apple', '5'), ('B', 'Ball', '3'), ('C', 'Cat', 'my_value'), ('my_value', 'Doll ',' my_value ')]

Conclusion

La fonction zip peut être émulée à l'aide de certaines boucles et conditions. Cependant, il aide à garder le code organisé et plus propre en supprimant la verbosité inutile et les déclarations répétitives.