如何获取python列表的第n个元素或默认值

212 投票
14 回答
350893 浏览
提问于 2025-04-15 20:42

在Python中,我怎么能简单地实现类似于dictionary.get(key, default)的功能,用在列表上呢?也就是说,我怎么能简单地获取列表中的第n个元素,如果没有这个元素就返回一个默认值呢?

比如说,给定一个列表myList,如果myList是空的,我怎么能得到5,如果不是空的,就得到myList[0]呢?

14 个回答

52
(a[n:]+[default])[0]

这可能在 a 变大时效果更好

(a[n:n+1]+[default])[0]

之所以这样有效,是因为当 n => len(a) 时,a[n:] 会变成一个空列表

下面是一个使用 range(5) 的例子,来说明这个是怎么工作的

>>> range(5)[3:4]
[3]
>>> range(5)[4:5]
[4]
>>> range(5)[5:6]
[]
>>> range(5)[6:7]
[]

还有完整的表达式

>>> (range(5)[3:4]+[999])[0]
3
>>> (range(5)[4:5]+[999])[0]
4
>>> (range(5)[5:6]+[999])[0]
999
>>> (range(5)[6:7]+[999])[0]
999
75
try:
   a = b[n]
except IndexError:
   a = default

补充说明:我去掉了对类型错误的检查——可能让调用者自己处理这个问题会更好。

172
l[index] if index < len(l) else default

为了支持负数索引,我们可以使用:

l[index] if -len(l) <= index < len(l) else default

撰写回答