最初の項目またはNoneを返すPythonイディオム 質問する

最初の項目またはNoneを返すPythonイディオム 質問する

リストを返すメソッドをいくつか呼び出しています。リストは空の場合があります。リストが空でない場合は、最初の項目を返し、それ以外の場合は を返します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_listNone

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

おすすめ記事