Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entpackt der Asterisk (*)-Operator Iterables in Python-Funktionsaufrufen?

Wie entpackt der Asterisk (*)-Operator Iterables in Python-Funktionsaufrufen?

DDD
DDDOriginal
2024-11-01 04:41:28246Durchsuche

How Does the Asterisk (*) Operator Unpack Iterables in Python Function Calls?

Verwendung von Sternchen in Funktionsaufrufen

In Python dient der Sternchen (*)-Operator als „Splat“-Operator. Bei Verwendung in einem Funktionsaufruf entpackt es eine iterierbare Funktion wie eine Liste in verschiedene Positionsargumente. Dies wird im bereitgestellten Codeausschnitt deutlich:

uniqueCrossTabs = list(itertools.chain(*uniqueCrossTabs))

Hier erweitert *uniqueCrossTabs die verschachtelte Liste uniqueCrossTabs in eine Reihe von Listenargumenten für itertools.chain(). Wenn uniqueCrossTabs beispielsweise [[1, 2], [3, 4]] enthält, wird *uniqueCrossTabs in [1, 2, 3, 4] übersetzt.

Dieser Vorgang unterscheidet sich von der einfachen Übergabe von uniqueCrossTabs ohne das Sternchen . Im letzteren Fall erhält itertools.chain() eine Liste von Listen statt einzelner Listenelemente. Folglich enthält der Ausgabeiterator Listen in seinen Elementen und keine reduzierten Werte.

Ein alternativer Ansatz zum Reduzieren verschachtelter Iterables ist die Verwendung von itertools.chain.from_iterable(), das explizit ein einzelnes Iterable von Iterables erwartet. Dies vereinfacht den Code zu:

uniqueCrossTabs = list(itertools.chain.from_iterable(uniqueCrossTabs))

Das obige ist der detaillierte Inhalt vonWie entpackt der Asterisk (*)-Operator Iterables in Python-Funktionsaufrufen?. 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