Heim >Backend-Entwicklung >Python-Tutorial >Wie funktionieren verschachtelte Listenverständnisse in Python und was sind ihre Äquivalente in Schleifenform?
Verstehen des Verständnisses verschachtelter Listen
Listenverständnisse bieten eine prägnante und elegante Syntax für die Bearbeitung von Sammlungen in Python. Durch die Kombination verschachtelter for-Schleifen lassen sich problemlos komplexe Datenstrukturen erstellen. Hier ist eine detaillierte Aufschlüsselung der Funktionsweise verschachtelter Listenverständnisse:
Beachten Sie das gegebene Listenverständnis:
<code class="python">[(min([row[i] for row in rows]),max([row[i] for row in rows])) for i in range(len(rows[0]))]</code>
Dieser Code entspricht der folgenden Schleife:
<code class="python">result = [] for i in range(len(rows[0])): innerResult = [] for row in rows: innerResult.append(row[i]) innerResult2 = [] for row in rows: innerResult2.append(row[i]) tuple = (min(innerResult), max(innerResult2)) result.append(tuple)</code>
Im Allgemeinen kann ein verschachteltes Listenverständnis der Form:
<code class="python">[exp2([exp1 for x in xSet]) for y in ySet]</code>
übersetzt werden als:
<code class="python">result = [] for y in ySet: innerResult = [] for x in xSet: innerResult.append(exp1) exp2Result = exp2(innerResult) result.append(exp2Result)</code>
Für einfachere Fälle, wie zum Beispiel:
<code class="python">[exp1 for x in xSet for y in ySet] </code>
es ist äquivalent zu:
<code class="python">result = [] for x in xSet: for y in ySet: result.append(exp1)</code>
während,
<code class="python">[[exp1 for x in xSet] for y in ySet]</code>
ist äquivalent zu:
<code class="python">result = [] for y in ySet: innerResult = [] for x in xSet: innerResult.append(exp1) result.append(innerResult)</code>
Es ist wichtig zu beachten, dass die Verschachtelung von for-Schleifen in a Das Verständnis einzelner Listen erfolgt immer von links nach rechts. Zum Beispiel:
<code class="python">[item for item in row for row in matrix] </code>
Dieser Code funktioniert nicht, da die innere Schleifenvariable „row“ in der äußeren Schleife nicht definiert ist. Die korrekte Form ist:
<code class="python">[item for row in matrix for item in row] </code>
Das obige ist der detaillierte Inhalt vonWie funktionieren verschachtelte Listenverständnisse in Python und was sind ihre Äquivalente in Schleifenform?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!