Heim  >  Artikel  >  Backend-Entwicklung  >  Warum reduziert Asterisk Listen in der Python-Funktion „itertools.chain“?

Warum reduziert Asterisk Listen in der Python-Funktion „itertools.chain“?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 11:13:01788Durchsuche

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

Wie der Asterisk-Operator Listen in Python reduziert

In Python kann die Funktion itertools.chain verwendet werden, um eine Liste von Listen zu reduzieren. Das folgende Code-Snippet veranschaulicht dies:

<code class="python">uniqueCrossTabs = list(itertools.chain(*uniqueCrossTabs))</code>

Sie fragen sich jedoch möglicherweise, warum das Sternchen (*) im Funktionsaufruf enthalten ist.

Den Asterisk-Operator verstehen

Das Sternchen ist in Python als „Splat“-Operator bekannt. Es nimmt ein iterierbares Element, beispielsweise eine Liste, und erweitert es im Funktionsaufruf in tatsächliche Positionsargumente.

So funktioniert es

Betrachten Sie das Beispiel, in dem uniqueCrossTabs ein ist Liste der Listen: [[1, 2], [3, 4]]. Wenn Sie das Sternchen verwenden, erweitert itertools.chain(*uniqueCrossTabs) die Liste in einzelne Listenargumente. Dies entspricht dem Aufruf von itertools.chain([1, 2], [3, 4]).

Vergleich mit Ohne Sternchen

Ohne Sternchen Sie würde nur uniqueCrossTabs als einzelnes Argument übergeben. In diesem Fall würde chain() einen Iterator zurückgeben, der die Liste der Listen durchläuft, nicht die einzelnen Elemente.

Verwendung von chain.from_iterable()

Für Um Listen zu reduzieren, ist itertools.chain.from_iterable() die geeignetere Wahl. Als Argument wird ein einzelnes Iterable von Iterables benötigt. Mit dieser Methode wird der Code zu:

<code class="python">uniqueCrossTabs = list(itertools.chain.from_iterable(uniqueCrossTabs))</code>

Das obige ist der detaillierte Inhalt vonWarum reduziert Asterisk Listen in der Python-Funktion „itertools.chain“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn