Maison > développement back-end > Tutoriel Python > Comment puis-je étendre la fonction zip() de Python pour gérer les itérables de longueurs inégales ?

Comment puis-je étendre la fonction zip() de Python pour gérer les itérables de longueurs inégales ?

Linda Hamilton
Libérer: 2024-11-27 17:56:13
original
481 Les gens l'ont consulté

How Can I Extend Python's zip() Function to Handle Iterables of Unequal Lengths?

Extension de la fonctionnalité zip() : remplissage jusqu'à la longueur la plus longue

La fonction zip() intégrée de Python associe des éléments de plusieurs itérables, mais elle tronque le résultat à la longueur de l'itérable le plus court. Si vous avez besoin d'un zip plus complet qui remplit les valeurs None pour s'aligner sur l'entrée la plus longue, envisagez les solutions suivantes :

Python 3 : itertools.zip_longest

En Python 3, itertools fournit la fonction zip_longest(). Il étend la liste des résultats pour qu'elle corresponde à la longueur de l'entrée la plus longue.

import itertools
a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

list(itertools.zip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Copier après la connexion

Vous pouvez spécifier une valeur de remplissage personnalisée à l'aide du paramètre fillvalue :

list(itertools.zip_longest(a, b, c, fillvalue='foo'))
# [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Copier après la connexion

Python 2 : itertools.izip_longest ou map Aucun

Dans Python 2, vous pouvez utiliser itertools.izip_longest (introduit dans Python 2.6) ou utilisez map avec None.

from itertools import izip_longest
a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

list(izip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

map(None, a, b, c)
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
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!

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