ホームページ > バックエンド開発 > Python チュートリアル > Python で条件付き代入にリスト内包表記を効率的に使用するにはどうすればよいですか?

Python で条件付き代入にリスト内包表記を効率的に使用するにはどうすればよいですか?

DDD
リリース: 2024-12-20 15:07:12
オリジナル
651 人が閲覧しました

How Can I Efficiently Use List Comprehensions for Conditional Assignments in Python?

条件付き代入にリスト内包表記を使用する

最近のディスカッションで、あるプログラマーが if/ を使用した for ループの変換で課題に遭遇しました。 else 構造を簡潔なリスト内包にまとめます。元のコード セグメントは次のようになります。

results = []
for x in xs:
    results.append(f(x) if x is not None else '')
ログイン後にコピー

その目的は、xs 内の対応する要素が None の場合に結果リスト内の要素に空の文字列を割り当て、None 以外の要素に関数 f を適用することでした。

リスト内包表記を作成する最初の試行が SyntaxError で失敗しました:

[f(x) for x in xs if x is not None else '']
ログイン後にコピー

リストを正常に使用するにはこのタスクの内包表記の正しい構文は次のとおりです。

[f(x) if x is not None else '' for x in xs]
ログイン後にコピー

この変更により、適切な評価に不可欠な if/else チェックの順序が維持されます。

リスト内包表記について構文

一般に、条件付き代入を伴うリスト内包表記は適用されます。

[f(x) if condition else g(x) for x in sequence]
ログイン後にコピー

ここで、

  • f(x) と g(x) は、条件に基づいて要素に適用される式または関数を表します。
  • 条件は、f(x) と g(x) のどちらが評価されるかを決定します。

さらに、条件に基づいて要素をフィルタリングすることだけを含むリスト内包表記の場合、構文は次のとおりです。

[f(x) for x in sequence if condition]
ログイン後にコピー

リスト内包表記を超えた条件式

次のような条件式があることに注意してください。リスト内包で使用されるものは、この構造に限定されるものではありません。これらは、条件に基づいて 2 つの式の値の間で選択する必要があるさまざまな状況で使用でき、他の言語の三項演算子 ?: と同じ目的を果たします。

条件式の外側の条件式の例リスト内包表記:

value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')
ログイン後にコピー

この式は、値が 2 で割り切れるかどうかを評価し、対応する文字列を出力します。

以上がPython で条件付き代入にリスト内包表記を効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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