ネストされたリストの内包を理解する
ネストされたリストの内包は、複雑なデータ構造を簡単に作成できる 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>
より単純な場合、等価性は次のようになります:
以上が入れ子になったリストの内包表記は Python でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。