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

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

Linda Hamilton
リリース: 2024-12-04 06:07:12
オリジナル
274 人が閲覧しました

How Does Nested List Comprehension Flatten a List in Python?

ネストされたリスト内包表記: 構文の分解

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート