条件付き代入にリスト内包表記を使用する
最近のディスカッションで、あるプログラマーが 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) for x in sequence if condition]
リスト内包表記を超えた条件式
次のような条件式があることに注意してください。リスト内包で使用されるものは、この構造に限定されるものではありません。これらは、条件に基づいて 2 つの式の値の間で選択する必要があるさまざまな状況で使用でき、他の言語の三項演算子 ?: と同じ目的を果たします。
条件式の外側の条件式の例リスト内包表記:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
この式は、値が 2 で割り切れるかどうかを評価し、対応する文字列を出力します。
以上がPython で条件付き代入にリスト内包表記を効率的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。