リストを返すメソッドをいくつか呼び出しています。リストは空の場合があります。リストが空でない場合は、最初の項目を返し、それ以外の場合は を返しますNone
。このコードは機能します:
def main():
my_list = get_list()
if len(my_list) > 0:
return my_list[0]
return None
しかし、これを行うための簡単な 1 行の慣用句があるはずです。あるのでしょうか?
ベストアンサー1
Python 2.6以上
next(iter(your_list), None)
可能であれば:your_list
None
next(iter(your_list or []), None)
Python 2.4
def get_first(iterable, default=None):
if iterable:
for item in iterable:
return item
return default
例:
x = get_first(get_first_list())
if x:
...
y = get_first(get_second_list())
if y:
...
別のオプションとしては、上記の関数をインライン化することです。
for x in get_first_list() or []:
# process x
break # process at most one item
for y in get_second_list() or []:
# process y
break
回避するにはbreak
次のように記述します。
for x in yield_first(get_first_list()):
x # process x
for y in yield_first(get_second_list()):
y # process y
どこ:
def yield_first(iterable):
for item in iterable or []:
yield item
return