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

Mary-Kate Olsen
發布: 2024-10-27 17:59:30
原創
535 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!