Pourquoi l'astérisque aplatit-il les listes dans la fonction « itertools.chain » de Python ?

Mary-Kate Olsen
Libérer: 2024-10-27 11:13:01
original
788 Les gens l'ont consulté

Why Does the Asterisk Flatten Lists in Python's `itertools.chain` Function?

Comment l'opérateur Asterisk aplatit les listes en Python

En Python, la fonction itertools.chain peut être utilisée pour aplatir une liste de listes. L'extrait de code suivant le démontre :

<code class="python">uniqueCrossTabs = list(itertools.chain(*uniqueCrossTabs))</code>
Copier après la connexion

Cependant, vous vous demandez peut-être pourquoi l'astérisque (*) est inclus dans l'appel de fonction.

Comprendre l'opérateur astérisque

L'astérisque est connu sous le nom d'opérateur "splat" en Python. Il prend un itérable, tel qu'une liste, et le développe en arguments de position réels dans l'appel de fonction.

Comment ça marche

Considérons l'exemple où uniqueCrossTabs est un liste de listes : [[1, 2], [3, 4]]. Lorsque vous utilisez l'astérisque, itertools.chain(*uniqueCrossTabs) développe la liste en arguments de liste individuels. Cela équivaut à appeler itertools.chain([1, 2], [3, 4]).

Comparaison avec Sans l'astérisque

Sans l'astérisque, vous serait de transmettre uniquement uniqueCrossTabs comme argument unique. Dans ce cas, chain() renverrait un itérateur qui parcourt la liste des listes, pas les éléments individuels.

Utilisation de chain.from_iterable()

Pour Pour aplatir les listes, itertools.chain.from_iterable() est un choix plus approprié. Il prend un seul itérable parmi les itérables comme argument. En utilisant cette méthode, le code devient :

<code class="python">uniqueCrossTabs = list(itertools.chain.from_iterable(uniqueCrossTabs))</code>
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!