首頁  >  文章  >  後端開發  >  Python 中的嵌套列表推導式如何運作以及它們在循環形式中的等價物是什麼?

Python 中的嵌套列表推導式如何運作以及它們在循環形式中的等價物是什麼?

DDD
DDD原創
2024-10-29 14:30:02453瀏覽

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

理解巢狀列表推導式

列表推導式為在 Python 中操作集合提供了簡潔而優雅的語法。透過組合嵌套的 for 循環,可以輕鬆建立複雜的資料結構。以下是嵌套列表理解如何工作的詳細分解:

考慮給定的列表理解:

<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>

此程式碼相當於以下循環:

<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>

一般來說,以下形式的嵌套列表理解可以翻譯為:

<code class="python">[exp2([exp1 for x in xSet]) for y in ySet]</code>

對於更簡單的情況,例如:

<code class="python">result = []
for y in ySet:
  innerResult = []
  for x in xSet:
    innerResult.append(exp1)
  exp2Result = exp2(innerResult)
  result.append(exp2Result)</code>

它相當於:

<code class="python">[exp1 for x in xSet for y in ySet] </code>

而,

<code class="python">result = [] 
for x in xSet:
  for y in ySet: 
    result.append(exp1)</code>

相當於:

<code class="python">[[exp1 for x in xSet] for y in ySet]</code>

需要注意的是,for 循環嵌套在單一列表理解總是從左到右。例如:

<code class="python">result = []
for y in ySet:
  innerResult = []
  for x in xSet:
    innerResult.append(exp1)
  result.append(innerResult)</code>

此程式碼將不起作用,因為內部循環變數「row」未在外部循環中定義。正確的形式是:

<code class="python">[item for item in row for row in matrix] </code>

以上是Python 中的嵌套列表推導式如何運作以及它們在循環形式中的等價物是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn