如何获取python列表的第n个元素或默认值
在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