ホームページ >バックエンド開発 >Python チュートリアル >変数プレフィックスを使用した Python のリスト内包表記はどのように機能しますか?

変数プレフィックスを使用した Python のリスト内包表記はどのように機能しますか?

DDD
DDDオリジナル
2024-11-22 02:33:13504ブラウズ

How Does Python's List Comprehension with a Variable Prefix Work?

変数プレフィックスを使用した Python for-in ループ

Python では、次のようなコード スニペットが発生する可能性があります。

foo = [x for x in bar if x.occupants > 1]

このコード スニペットは、何を意味し、どのように行うのかという疑問を引き起こします。 work?

リスト内包表記について

問題の構文はリスト内包表記として知られています。リスト内包表記は、既存のリストに基づいて新しいリストを生成する簡潔な方法であり、通常はその要素をフィルタリングまたは変換することによって行われます。

リスト内包表記の構文構造

Aリストの内包表記はこの一般的な構文に従います。構造:

[expression for item in iterable if condition]

指定された例の説明

指定された例では、次の要素が関係します:

  • 式: x (これは新しい要素になりますlist)
  • 反復可能: bar (フィルタリングまたは変換されるリスト)
  • 条件: x.occupants > 1 (バーのフィルターに使用)

仕組み

リスト内包表記は、リスト バー内の各要素 x を反復処理します。各要素 x について、条件 x.occupants > が満たされているかどうかを確認します。 1 は真です。条件が True の場合、式 x が評価され、作成中の新しいリストに含まれます。

For-in ループとの比較

リストの内包表記は同等です。次の従来の for-in ループに変換します:

foo = []
for x in bar:
    if x.occupants > 1:
        foo.append(x)

ただし、リストの内包はより簡潔であり、

構文を理解するための別の方法

あるいは、リスト内包表記は 2 つの組み込み関数へのショートカットとして考えることもできます:

  • map(function, iterable) は、指定された関数を反復可能な各要素に適用し、次のリストを返します。 results.
  • filter(condition, iterable) は、指定された条件に基づいて反復可能オブジェクトをフィルタリングし、条件を満たす要素のリストを返します。

指定された例では、リスト内包表記は次と同等です:

foo = map(lambda x: x, filter(lambda x: x.occupants > 1, bar))

以上が変数プレフィックスを使用した Python のリスト内包表記はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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