Я уверен, что есть более простой способ сделать это, что просто не происходит для меня.
Я вызываю кучу методов, которые возвращают список. Список может быть пустым. Если список не пуст, я хочу вернуть первый элемент; в противном случае я хочу вернуть None. Этот код работает:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
Мне кажется, что для этого должна быть простая однострочная идиома, но для жизни я не могу думать об этом. Есть?
Edit:
Причина, по которой я ищу однострочное выражение здесь, заключается не в том, что мне нравится невероятно сложный код, а потому, что мне приходится писать много кода, например:
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, и я думал, что писать функцию было глупо, если бы было простое выражение, которое могло бы сделать трюк. Но, видя эти ответы, кажется, что функция является простым решением.