リスト内包表記のif/else 質問する

リスト内包表記のif/else 質問する

/forを含む次の-loop をリスト内包表記に変換するにはどうすればよいですか?ifelse

results = []
for x in xs:
    results.append(f(x) if x is not None else '')

''場合は、それ以外の場合はとなるはずです。試してみました:xNonef(x)

[f(x) for x in xs if x is not None else '']

しかし、 が返されますSyntaxError。正しい構文は何ですか?


見るPython には三項条件演算子がありますか?の詳細について... if ... else ...
条件付きリストの理解条件に基づいて値を省略するには:[... for x in xs if x cond]を参照してください
リスト内包条件文における `elif`のためにelif

ベストアンサー1

確かにそれは可能です。順序の問題だけです:

[f(x) if x is not None else '' for x in xs]

一般的に、

[f(x) if condition else g(x) for x in sequence]

そして、if条件のみのリスト内包表記の場合、

[f(x) for x in sequence if condition]

これは実際には異なる言語構造、条件式、それ自体は理解構文一方、ifの後の はfor…inリスト内包表記の一部であり、ソース反復可能オブジェクトから要素をフィルタリングするために使用されます。


条件式は、何らかの条件に基づいて2つの式の値のいずれかを選択したい場合など、あらゆる状況で使用できます。これは、?:他の言語に存在する三項演算子。 例えば:

value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')

おすすめ記事