Ich bin sicher, es gibt einen einfacheren Weg, der mir einfach nicht einfällt.
Ich rufe eine Reihe von Methoden auf, die eine Liste zurückgeben. Die Liste ist möglicherweise leer. Wenn die Liste nicht leer ist, möchte ich das erste Element zurückgeben. Andernfalls möchte ich None zurückgeben. Dieser Code funktioniert:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
Es scheint mir, dass es eine einfache einzeilige Redewendung dafür geben sollte, aber für mein Leben kann ich nicht daran denken. Gibt es?
Bearbeiten:
Der Grund, warum ich hier nach einem einzeiligen Ausdruck suche, ist nicht, dass ich unglaublich knappen Code mag, sondern dass ich so viel Code schreiben muss:
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
Was ich gerne tun würde, kann sicherlich mit einer Funktion erreicht werden (und wird es wahrscheinlich auch sein):
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
Ich habe die Frage gestellt, weil ich häufig überrascht bin, was einfache Ausdrücke in Python bewirken können, und ich dachte, dass das Schreiben einer Funktion eine dumme Sache ist, wenn es einen einfachen Ausdruck gibt, der den Trick macht. Aber diese Antworten zu sehen, wie es scheint , eine Funktion ist die einfache Lösung.
next(iter(your_list))
, denn wenn Sie ein zweites Argument iter
angeben, sagen Sie, dass das erste Argument aufrufbar ist.
next(iter(your_list), None)
anstatt davonfirst_item(your_list)
auszugehen, dass diesyour_list
nicht der Fall istNone
(get_first_list()
undget_second_list()
müssen immer eine iterierbare Datei zurückgeben).