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

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

DDD
發布: 2024-10-29 14:30:02
原創
466 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板