1. ホーム
  2. python

[解決済み] リスト内包のif/else

2022-03-19 02:08:14

質問

Pythonで次のようなことをするにはどうしたらよいでしょうか。

row = [unicode(x.strip()) for x in row if x is not None else '']

本質的に

  1. すべての Nones を空文字列に置き換えて、次に
  2. 関数を実行する。

どのように解決するのですか?

全然できますよ。ただ、注文の問題です。

[unicode(x.strip()) if x is not None else '' for x in row]

一般的には

[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')