列表中get()的惯用python等价方法是什么?
在字典中,如果你调用 get(key) 方法,而这个 key 不存在,默认会返回 None。那么对于列表来说,有没有类似的方式?也就是说,如果列表的大小至少和你传入的索引一样大,就返回这个索引对应的元素;如果小于这个索引,就返回 None?
换句话说,怎么写一个更简洁的函数来实现这个功能:
def get(l, i):
if i < len(l):
return l[i]
else:
return None
2 个回答
3
如果你觉得 l[i]
经常不存在,那就用:
def get(l,i):
return l[i] if i<len(l) else None
如果你觉得 l[i]
几乎总是存在,那就用 try...except
:
def get(l,i):
try:
return l[i]
except IndexError:
return None
解释一下:当出现错误时,使用 try...except
会比较耗费资源,但在没有错误的时候,它的运行速度是比较快的。
7
你的实现方式是“先看再跳”的风格。这种方式在Python中并不是最推荐的。更符合Python风格的是“直接执行代码,然后捕捉错误”。
def get(l, i, d=None):
try:
return l[i]
except IndexError:
return d