我喜欢函数get,其中可以提供默认值,但这只适用于字典。
s=dict{}
s.get("Ann", 0)
我为列表写了类似的东西。这个函数在Python3.4中是否已存在?
def get(s, ind):
return len(s)>ind and s[ind] or 0
答案 0 :(得分:1)
不,list
没有这种内置方法。找出列表索引是否有效是很简单的,因此不需要任何函数。您可以将函数中的代码(或者更具可读性s[ind] if ind < len(s) else 0
)直接放入它需要的两三个地方,这是完全可以理解的。
(当然,您的代码假设ind
始终为正......)
如果您确实想编写函数,请将其设为list
子类的方法。
答案 1 :(得分:0)
列表中没有类似getid的方法,但您可以使用itertools.islice
和next
,默认值为0:
from itertools import islice
def get(s, ind):
return next(islice(s, ind, ind + 1), 0)
如果and s[ind]
的值为0
,ind
,0
,则使用None
的代码将返回默认False
等等......这可能不是你想要的。
如果要为falsey值返回默认值并处理负数索引,可以使用abs
:
def get(s, ind):
return s[ind] or 0 if len(s) > abs(ind) else 0