Heim > Artikel > Backend-Entwicklung > Können Listenverständnisse abhängige Iteratoren haben?
Unabhängige Iteratoren im Listenverständnis
In Python ermöglichen Listenverständnisse mehrere Iterationsschleifen. Betrachten Sie das folgende Beispiel:
<code class="python">[(x, y) for x in a for y in b]</code>
wobei a und b Sequenzen sind. Dieses Verständnis erzeugt Paare von Elementen aus dem kartesischen Produkt von a und b.
Können Iteratoren abhängig sein?
Kann ein Iterator in einem Listenverständnis auf einen anderen verweisen? Die Antwort lautet „Ja“, und der folgende Code demonstriert dies:
<code class="python">[x for x in a for a in b]</code>
In diesem Verständnis wird der äußere Schleifeniterator a zum Iterator für die innere Schleife. Dadurch wird eine verschachtelte Liste effektiv reduziert.
Beispiel
Wenn wir eine verschachtelte Liste a haben:
<code class="python">a = [[1, 2], [3, 4]]</code>
Das folgende Listenverständnis würde sie reduzieren in einer einzigen Liste:
<code class="python">[x for x in a for a in b]</code>
Ergebnis:
[1, 2, 3, 4]
Alternative Lösung mit Generatoren
Im bereitgestellten Python-Code lautet der Text als Sätze gespeichert, und die Aufgabe besteht darin, eine einzelne Liste von Wörtern zu extrahieren. So können Sie dies mit einem Generator erreichen:
<code class="python">text = (("Hi", "Steve!"), ("What's", "up?")) gen = (word for sentence in text for word in sentence)</code>
Die gen-Variable liefert nun die abgeflachte Wortliste:
<code class="python">for word in gen: print(word)</code>
Ausgabe:
Hi Steve! What's up?
Das obige ist der detaillierte Inhalt vonKönnen Listenverständnisse abhängige Iteratoren haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!