条件文を使用したリスト内包表記
Python では、リスト内包表記は新しいリストを生成するコンパクトな方法を提供します。ただし、これらの内包表記内で条件文を使用する場合、エラーを避けるために適切な構文に従うことが重要です。
問題: Iterable の比較
2 つの iterable があるとします。と b で、両方の反復可能オブジェクトに出現する要素を含む新しいリストを作成したいと考えています。次のコードを試みます:
<code class="python">a = ('q', 'r') b = ('q') print([ y if y not in b for y in a])</code>
構文エラー
ただし、このコードは無効な構文エラーを生成し、内包表記で使用されるラムダ関数に問題があることを示します。 .
解決策: 内包表記の並べ替え
リスト内包表記で条件文を使用するための正しい構文は、for 句の後に if 式を配置することです。私たちの場合、修正されたコードは次のようになります。
<code class="python">[y for y in a if y not in b]</code>
この内包表記は a を反復処理し、要素が b に存在しない場合にのみ新しいリストに要素を追加します。結果は期待どおり ['r'] を生成するはずです。
代替構文
あるいは、if-else 三項演算子を使用して、内部の条件ロジックを処理できます。リストの内包表記:
<code class="python">[y if y not in b else None for y in a]</code>
このコードは、b に存在しない要素が追加される新しいリストを作成しますが、他の要素は None 値を受け取ります。
以上がPython のリスト内包表記の条件文の正しい構文は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。