我喜欢函数get,它可以提供默认值,但只适用于字典。
s=dict{}
s.get("Ann", 0)
我为列表写了类似的代码。在Python3.4中是否已存在此函数?
def get(s, ind):
return len(s)>ind and s[ind] or 0
我喜欢函数get,它可以提供默认值,但只适用于字典。
s=dict{}
s.get("Ann", 0)
我为列表写了类似的代码。在Python3.4中是否已存在此函数?
def get(s, ind):
return len(s)>ind and s[ind] or 0
s[ind] if ind < len(s) else 0
),这样就可以完全理解了。next()
调用上指定默认值。next(iter(s[ind:ind+1]), 0)
但是这种方式比使用if
结构更慢、更不清晰。
当然,你的代码和我的代码都假设ind
始终为正数...
如果您确实想编写一个函数,您可以将其作为list
子类的方法。
列表中没有像get这样的方法,但是你可以使用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
处的值为任何falsey值,如0
、None
、False
等,则可能不是您想要的。abs
:def get(s, ind):
return s[ind] or 0 if len(s) > abs(ind) else 0
and s[ind]
? - Padraic Cunningham