ホームページ  >  記事  >  バックエンド開発  >  Python のリスト内包構文で三項演算子が必要になるのはどのような場合ですか?

Python のリスト内包構文で三項演算子が必要になるのはどのような場合ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-22 12:47:39443ブラウズ

When Does List Comprehension Syntax Require a Ternary Operator in Python?

リスト内包の難題: イテラブルでの条件付きフィルタリング

Python では、リスト内包により、既存のイテラブルに基づいてリストを作成する簡潔な方法が提供されます。ただし、if ステートメントを含むリストの内包表記に関して疑問が生じました。

目的は、2 つの反復可能オブジェクト a と b を比較し、両方に出現する要素のみを出力することでした。意図したコードは次のようになります:

<code class="python">print([y if y not in b for y in a])</code>

残念ながら、このコードでは構文エラーが発生しました。問題は、if-else 構造の順序にあります。 Python では、三項演算子として使用しない限り、条件ステートメントはリスト内包表記の for ループの後に来る必要があります。

正しい構文:

<code class="python">[y for y in a if y not in b]</code>

このコードは反復されます。 a の各要素 y を通して。 y が b に見つからない場合は、リストに追加されます。結果のリストには、a と b の両方に出現する要素が含まれます。

代替三項演算子の構文:

<code class="python">[y if y not in b else other_value for y in a]</code>

このコードは、三項演算子を使用して、 b で y が見つからない場合の代替値 (other_value)。このアプローチはあまり一般的ではありませんが、通常はデフォルト値が必要な場合に使用されます。

以上がPython のリスト内包構文で三項演算子が必要になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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