1. ホーム
  2. python

[解決済み] リストからNoneでない最初の値を取得する

2023-07-17 14:15:14

質問

リストが与えられたとき、最初の非Noneの値を取得する方法はありますか?そして、もしそうなら、そうするためのpythonicな方法は何でしょうか?

例えば、私は持っています。

  • a = objA.addreses.country.code
  • b = objB.country.code
  • c = None
  • d = 'CA'

この場合、aがNoneならbを、aもbもNoneならdを取得したい。

現在、私は以下のようなことをしています。 (((a or b) or c) or d) のようなことをしていますが、他の方法はありますか?

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

あなたは next() :

>>> a = [None, None, None, 1, 2, 3, 4, 5]
>>> next(item for item in a if item is not None)
1

リストに Nones だけが含まれている場合、それは StopIteration 例外が発生します。この場合、デフォルト値を持ちたい場合は、次のようにしてください。

>>> a = [None, None, None]
>>> next((item for item in a if item is not None), 'All are Nones')
All are Nones