Comment compresser deux listes en Python
Souvent, vous pourriez être intéressé par la compression (ou la « fusion ») de deux listes en Python. Heureusement, cela est facile à faire en utilisant la fonction zip().
Ce tutoriel montre plusieurs exemples d’utilisation pratique de cette fonction.
Exemple 1 : compresser deux listes de longueur égale en une seule liste
La syntaxe suivante montre comment compresser deux listes de longueur égale en une seule :
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list(zip(a, b)) [('a', 1), ('b', 2), ('c', 3)]
Exemple 2 : compresser deux listes de longueur égale dans un dictionnaire
La syntaxe suivante montre comment compresser deux listes de longueur égale dans un dictionnaire :
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict(zip(keys, values)) {'a': 1, 'b': 2, 'c': 3}
Exemple 3 : compresser deux listes de longueur inégale
Si vos deux listes ont des longueurs inégales, zip() sera tronqué à la longueur de la liste la plus courte :
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list(zip(a, b)) [('a', 1), ('b', 2), ('c', 3)]
Si vous souhaitez empêcher zip() de tronquer à la longueur de la liste la plus courte, vous pouvez plutôt utiliser la fonction zip_longest() de la bibliothèque itertools .
Par défaut, cette fonction remplit la valeur « Aucune » pour les valeurs manquantes :
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list(zip_longest(a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
Cependant, vous pouvez utiliser l’argument fillvalue pour spécifier une valeur de remplissage différente à utiliser :
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list(zip_longest(a, b, fillvalue=0)) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
Vous pouvez trouver la documentation complète de la fonction zip_longest() ici .