Maison  >  Article  >  développement back-end  >  Pourquoi l'astérisque aplatit-il les listes dans la fonction « itertools.chain » de Python ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 11:13:01788parcourir

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>

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>

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