ネストされたリスト内包表記: 構文の分解
Python では、リスト内包表記は既存のリストに基づいて新しいリストを生成する簡潔な方法です。 1つ。ただし、ネストされたリストの内包表記となると、構文が少し混乱する可能性があります。
次のスニペットを考えてみましょう:
a = [[1,2],[3,4],[5,6]] b = [x for xs in a for x in xs]
このコードは、ネストされたリスト a をフラット化されたリスト b に変換します。 a のすべての要素が含まれています。これがどのように機能するかを理解するために、構文を分解してみましょう。
[x for xs in a for x in xs]
これは 2 レベルのネストされた内包表記です。これは本質的に次のように言っています:
# Loop over the outer list for xs in a: # Loop over the inner list for x in xs: # Add x to the new list b b.append(x)
つまり、最初に外側のリスト a を反復処理し、各サブリストを変数 xs に割り当て、次にサブリストを反復して各要素を変数 x に割り当てます。各要素 x について、それを新しいリスト b.
に追加します。
この展開プロセスは、ループが書かれた順序に従います。最も外側のループの変化が最も遅く、次に内側のループが続きます。これは、PEP202 で言及されている「Right One」原則であり、内包表記は最も内側のループで最も速く変化するインデックスを使用して記述する必要があると述べています。
この原則を理解することで、複雑なネストされたリスト内包表記であっても自信を持って解読できるようになります。 .以上が入れ子になったリストの内包表記は Python でどのようにリストを平坦化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。