Heim >Backend-Entwicklung >Python-Tutorial >Wie funktionieren verschachtelte Listenverständnisse in Python und was sind ihre Äquivalente in Schleifenform?

Wie funktionieren verschachtelte Listenverständnisse in Python und was sind ihre Äquivalente in Schleifenform?

DDD
DDDOriginal
2024-10-29 14:30:02487Durchsuche

How do Nested List Comprehensions in Python Work and What are Their Equivalents in Loop Form?

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!

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