我敢肯定有一个更简单的方法,这只是没有发生在我身上。
我调用一堆返回列表的方法。列表可能为空。如果列表是非空的,我想返回第一个项目;否则,我想返回None。此代码工作原理:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
在我看来,应该有一个简单的单行习语这样做,但对我的生活我不能想到它。在那儿?
编辑:
我在这里寻找一个单行表达式的原因不是我喜欢令人难以置信的简洁的代码,而是因为我不得不写这么多的代码:
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中的简单表达式可以做什么,我认为写一个函数是一个愚蠢的事情,如果有一个简单的表达式可以做的伎俩。但看到这些答案,似乎一个函数是简单的解决方案。