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 ?

Comment puis-je compléter des listes zippées en Python pour qu'elles correspondent à la longueur la plus longue ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 07:30:13587parcourir

How Can I Pad Zipped Lists in Python to Match the Longest Length?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn