如果密钥不存在于字典中,则默认情况下在字典上调用get(key)将返回None。什么是列表的惯用等价物,例如,如果列表的大小至少为传入索引的大小,则返回该元素,否则返回None?什么是列表get()的常用python等价物?
要改写,这是什么功能的更地道/紧凑型:
def get(l, i):
if i < len(l):
return l[i]
else:
return None
如果密钥不存在于字典中,则默认情况下在字典上调用get(key)将返回None。什么是列表的惯用等价物,例如,如果列表的大小至少为传入索引的大小,则返回该元素,否则返回None?什么是列表get()的常用python等价物?
要改写,这是什么功能的更地道/紧凑型:
def get(l, i):
if i < len(l):
return l[i]
else:
return None
你的实现是Look Before You Leap风格。这是Python的到execute the code and catch errors代替:
def get(l, i, d=None):
try:
return l[i]
except IndexError:
return d
如果你希望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
在引发异常时非常昂贵,否则相当快。
'如果我
在大多数情况下,我使用'defaultdict'而不是'dict.get()',如果这更符合您的用例,您也可以使用'defaultlist'。 –
你为什么认为你需要这个?索引列表通常不是我们推测的。换言之;列表通常以这样的方式使用,即我们对每个元素应用一个动作;而不是一个杰出的元素(如果它存在的话)。看起来很可能你正在使用一个不寻常的列表(可能一个班会更好?) – SingleNegationElimination