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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 06:53:28815ブラウズ

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

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