首頁  >  文章  >  後端開發  >  Python 中的嵌套列表理解如何運作?

Python 中的嵌套列表理解如何運作?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 17:59:30527瀏覽

How Does Nested List Comprehension Work in Python?

理解巢狀清單理解

巢狀清單理解是Python 中的一個強大功能,可讓您輕鬆建立複雜的資料結構。為了理解它是如何運作的,讓我們來看一個簡化版本:

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

這個表達式相當於下面的for 循環:

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

理解嵌套列表理解的關鍵是巢狀for 循環。外層循環迭代 rows[0] 的元素,而內層循環迭代 rows 中的行。

在上面的表達式中,第一個 for 迴圈負責建立清單的外部結構。對於每次迭代,它都會建立一個新元組。同時,第二個 for 迴圈會建立元組的內部結構。對於 rows 中的每一行,它會提取索引 i 處的元素並將其新增至內部結果清單。

為了概括這個概念,任何形式的嵌套列表理解

<code class="python">[exp2([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)
  exp2Result = exp2(innerResult)
  result.append(exp2Result)</code>

對於更簡單的情況,等價很簡單:

  • [exp1 for x in xSet for y in ySet]: 等價於for x in xSet: for y in ySet: result.append(exp1)
  • [[exp1 for x in xSet] for y in ySet]: 等價於for y in ySet: innerResult=[];對於xSet 中的x:innerResult.append(exp1); result.append(innerResult)

以上是Python 中的嵌套列表理解如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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