Python中列表的惯用等效get()是什么?

4

在字典上调用get(key)函数,如果字典中不存在该键,则默认返回None。那么对于列表来说,当列表长度至少为传入的索引时返回元素,否则返回None,有什么惯用的等效方法呢?

换句话说,有没有更加惯用/紧凑的版本实现这个函数:

def get(l, i):
    if i < len(l):
        return l[i]
    else:
        return None

1
在大多数情况下,我使用defaultdict而不是dict.get(),如果更适合您的用例,您也可以想出一个defaultlist - Michael Hoffman
2
你为什么认为你需要这个?索引列表通常不是人们猜测的事情。换句话说,列表通常被用于对每个元素应用操作,而不是对一个特定的元素(如果存在的话)进行操作。看起来你可能正在使用列表进行一些不寻常的操作(也许使用类会更好?) - SingleNegationElimination
2个回答

7

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的执行开销很大,但在没有异常抛出时,则运行相对较快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接