我相信有一种更简单的方法可以做到这一点,但我并没有想到。
我正在调用一组返回列表的方法。列表可能为空。如果列表非空,则返回第一项;否则,则不返回任何项。此代码有效:
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中的简单表达式所能做的感到惊讶,我认为如果有一个简单的表达式可以做到这一点,那么编写一个函数是一件愚蠢的事情。但看到这些答案,似乎函数是的简单解。
最好的办法是:
您也可以在一行中完成,但程序员很难阅读:
Python2.6+
如果
your_list
可以是None
:Python2.4
示例:
另一个选项是内联上面的函数:
为了避免
break
,您可以编写:其中:
这应该管用。
顺便说一下,我没有使用变量
list
,因为这会覆盖内置的list()
函数。编辑:我有一个稍微简单,但错误的版本在这里早些时候。
相关问题 更多 >
编程相关推荐