Maison >développement back-end >Tutoriel Python >Comment la fonction `zip_longest()` de Python gère-t-elle les séquences d'entrée de longueur inégale ?

Comment la fonction `zip_longest()` de Python gère-t-elle les séquences d'entrée de longueur inégale ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 04:14:09874parcourir

How Does Python's `zip_longest()` Function Handle Unequal-Length Input Sequences?

Extension de la fonctionnalité Zip avec Padding

Zip() est une fonction utile pour combiner des éléments de plusieurs séquences en une seule liste de tuples. Cependant, il présente une limitation dans la mesure où il ne créera que des tuples contenant autant d'éléments que la séquence d'entrée la plus courte. Cela peut conduire à des résultats incomplets lorsque vous travaillez avec des séquences de longueurs variables.

Pour surmonter cette limitation, une fonction plus avancée appelée zip_longest() a été introduite. zip_longest() est disponible dans Python 3 et fournit une version améliorée de zip() qui complète automatiquement les valeurs manquantes dans les résultats afin que la longueur de la liste résultante corresponde à la longueur de l'entrée la plus longue plutôt qu'à la plus courte.

Pour utiliser zip_longest(), transmettez-lui simplement les séquences que vous souhaitez combiner comme arguments. La fonction créera des tuples pour chaque ensemble d'éléments correspondants dans les séquences d'entrée et remplira toutes les valeurs manquantes avec une valeur de remplissage par défaut (généralement Aucune).

Par exemple, considérons l'extrait de code suivant :

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

print(list(itertools.zip_longest(a, b, c)))

Ce code affichera la liste de tuples suivante :

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

Comme vous pouvez le voir, la liste résultante a le même longueur que la séquence d’entrée la plus longue (b). Les valeurs manquantes dans a et c ont été complétées avec Aucun.

Vous pouvez également spécifier une valeur de remplissage personnalisée à l'aide du paramètre fillvalue. Par exemple, l'extrait de code suivant complète les valeurs manquantes avec la chaîne « foo » :

print(list(itertools.zip_longest(a, b, c, fillvalue='foo')))

Cela affichera la liste de tuples suivante :

[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]

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