是否有“获取或默认”方式来访问列表?

时间:2015-03-19 20:11:07

标签: python list python-3.x

我喜欢函数get,其中可以提供默认值,但这只适用于字典。

s=dict{}
s.get("Ann", 0)

我为列表写了类似的东西。这个函数在Python3.4中是否已存在?

def get(s, ind):
    return len(s)>ind and s[ind] or 0

2 个答案:

答案 0 :(得分:1)

不,list没有这种内置方法。找出列表索引是否有效是很简单的,因此不需要任何函数。您可以将函数中的代码(或者更具可读性s[ind] if ind < len(s) else 0)直接放入它需要的两三个地方,这是完全可以理解的。

(当然,您的代码假设ind始终为正......)

如果您确实想编写函数,请将其设为list子类的方法。

答案 1 :(得分:0)

列表中没有类似getid的方法,但您可以使用itertools.islicenext,默认值为0:

from itertools import islice
def get(s, ind):
    return next(islice(s, ind, ind + 1), 0)

如果and s[ind]的值为0ind0,则使用None的代码将返回默认False等等......这可能不是你想要的。

如果要为falsey值返回默认值并处理负数索引,可以使用abs

def get(s, ind):
    return s[ind] or 0 if len(s) > abs(ind) else 0