ホームページ >バックエンド開発 >Python チュートリアル >入れ子になったリストの内包表記は Python でどのように機能しますか?

入れ子になったリストの内包表記は Python でどのように機能しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 17:59:30635ブラウズ

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 ループはリストの外側の構造を作成します。反復ごとに、新しいタプルが作成されます。一方、2 番目の for ループはタプルの内部構造を作成します。行の各行について、インデックス 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 と同等xSet の x: ySet の y: result.append(exp1)
  • [[xSet の x の exp1] ySet の y]: ySet の y と同等: innerResult=[]; xSet の x の場合: innerResult.append(exp1); result.append(innerResult)

以上が入れ子になったリストの内包表記は Python でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。