ホームページ > バックエンド開発 > Python チュートリアル > 入れ子になったリスト内包表記はどのように機能するのか: 構造と機能を解読する?

入れ子になったリスト内包表記はどのように機能するのか: 構造と機能を解読する?

Patricia Arquette
リリース: 2024-10-30 06:53:28
オリジナル
876 人が閲覧しました

How do Nested List Comprehensions Work: Decoding the Structure and Functionality?

ネストされたリスト内包表記について

ネストされたリスト内包表記は、複雑なデータ構造を簡潔かつ効率的な方法で生成するための強力なツールを提供します。それらの動作を理解するために、その構造を分解してみましょう。

一般的な構文:

[exp2([exp1 for x in xSet]) for y in ySet]
ログイン後にコピー

拡張ループ形式への変換:

result = []
for y in ySet:
    innerResult = []
    for x in xSet:
        innerResult.append(exp1)
    exp2Result = exp2(innerResult)
    result.append(exp2Result)
ログイン後にコピー

単純化されたケース:

  • [exp1 for x in xSet in y for ySet]:

    result = []
    for x in xSet:
        for y in ySet:
            result.append(exp1)
    ログイン後にコピー
  • [[xSet の x の exp1] ySet の y の]:

    result = []
    for y in ySet:
        innerResult = []
        for x in xSet:
            innerResult.append(exp1)
        result.append(innerResult)
    ログイン後にコピー

例:

次のネストされたリストの内包表記:

[(min([row[i] for row in rows]), max([row[i] for row in rows])) for i in range(len(rows[0]))]
ログイン後にコピー

タプルのリストを生成します。各タプルには、行リスト内のすべての行にわたる指定された列の最小値と最大値が含まれます。 。同等の展開されたループ形式は次のようになります。

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)
ログイン後にコピー

キー ポイント:

  • 最も内側のループは、最も内側の式 (exp1) に対応します。
  • 外側のループは、内側のループへの入力を生成します。
  • 結果は、内側の式からの結果のリストです。
  • ループのネスト順序によって構造が決まります。

この体系的なアプローチを理解することで、この概念を幅広いリスト理解のバリエーションに適用できます。

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

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