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
Libérer: 2024-11-28 07:30:13
original
588 Les gens l'ont consulté

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)
Copier après la connexion

Sortie :

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion

Sortie :

[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Copier après la connexion

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)
Copier après la connexion

Sortie :

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal