これを行う簡単な方法が、私には起こらないと確信しています。
リストを返す一連のメソッドを呼び出しています。リストは空の場合があります。リストが空でない場合は、最初のアイテムを返します。それ以外の場合は、Noneを返します。このコードは機能します:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
これを行うための簡単な1行のイディオムがあるべきだと私には思われますが、私の人生では、それを考えることはできません。ある?
編集:
ここで1行の式を探しているのは、信じられないほど簡潔なコードが好きなのではなく、次のようなコードをたくさん書かなければならないからです。
x = get_first_list()
if x:
# do something with x[0]
# inevitably forget the [0] part, and have a bug to fix
y = get_second_list()
if y:
# do something with y[0]
# inevitably forget the [0] part AGAIN, and have another bug to fix
私がしたいことは確かに関数で達成できます(おそらくそうなるでしょう):
def first_item(list_or_none):
if list_or_none: return list_or_none[0]
x = first_item(get_first_list())
if x:
# do something with x
y = first_item(get_second_list())
if y:
# do something with y
質問を投稿したのは、Pythonの単純な式で何ができるかに驚かされることが多かったためです。単純な式があれば、関数を書くのはばかげたことだと思いました。しかし、これらの答えを見ると、関数は単純な解決策のようです。
next(iter(your_list))
ますが、2番目の引数を指定した場合以来、iter
あなたは最初の引数は呼び出し可能であること、それを言っています。
next(iter(your_list), None)
代わりにfirst_item(your_list)
仮定your_list
されていないNone
(get_first_list()
とget_second_list()
いつものiterableを返さなければなりません)。