Maison >développement back-end >Tutoriel Python >Comment puis-je compléter des listes zippées en Python pour qu'elles correspondent à la longueur la plus longue ?
Remplissage des listes compressées jusqu'à la longueur la plus longue
Dans le domaine de la programmation Python, la fonction zip() fusionne de manière transparente plusieurs itérables dans une liste de tuples. Cependant, la longueur de la liste résultante est souvent limitée par l'entrée la plus courte. Pour surmonter cette limitation et compléter la liste jusqu'à la longueur de l'entrée la plus longue, on peut rechercher des solutions alternatives.
itertools.zip_longest : l'ajustement parfait
Python 3 dévoile la puissance de itertools.zip_longest, une fonction spécialement conçue à cet effet. Il complète de manière transparente les entrées les plus courtes avec des valeurs None, étendant ainsi la liste jusqu'à la longueur de l'itérable le plus long.
Voici un exemple illustratif :
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] result = list(itertools.zip_longest(a, b, c)) print(result)
Sortie :
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Personnalisation de la valeur de remplissage
La fonction zip_longest offre la flexibilité de spécifier une valeur de remplissage personnalisée à l'aide du paramètre fillvalue. Cela permet plus de contrôle sur le mécanisme de remplissage.
result = list(itertools.zip_longest(a, b, c, fillvalue='foo')) print(result)
Sortie :
[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Python 2.x : approches alternatives
Pour Les utilisateurs de Python 2.x recherchant une solution équivalente peuvent utiliser itertools.izip_longest (disponible dans Python 2.6) ou utiliser map avec Aucune comme alternative.
result = list(map(None, a, b, c)) print(result)
Sortie :
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!