列表中get()的惯用python等价方法是什么?

4 投票
2 回答
630 浏览
提问于 2025-04-17 03:57

在字典中,如果你调用 get(key) 方法,而这个 key 不存在,默认会返回 None。那么对于列表来说,有没有类似的方式?也就是说,如果列表的大小至少和你传入的索引一样大,就返回这个索引对应的元素;如果小于这个索引,就返回 None?

换句话说,怎么写一个更简洁的函数来实现这个功能:

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

2 个回答

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 会比较耗费资源,但在没有错误的时候,它的运行速度是比较快的。

7

你的实现方式是“先看再跳”的风格。这种方式在Python中并不是最推荐的。更符合Python风格的是“直接执行代码,然后捕捉错误”。

def get(l, i, d=None):
    try:
        return l[i]
    except IndexError:
        return d

撰写回答