我正在寻找在dictionary.get(key, default)
的python中用于列表的等价物。有没有任何一种线性习惯用法来获取列表的第n个元素,或者如果不可用,则获取默认值?
例如,给定一个列表myList,我希望获取myList[0]
,如果myList
为空列表,则为5。
谢谢。
发布于 2010-03-22 20:18:48
l[index] if index < len(l) else default
要支持负指数,我们可以使用:
l[index] if -len(l) <= index < len(l) else default
发布于 2010-03-22 20:18:56
try:
a = b[n]
except IndexError:
a = default
编辑:我删除了对TypeError的检查--也许让调用者来处理这件事更好。
发布于 2010-03-22 20:25:46
(a[n:]+[default])[0]
随着a
变得越来越大,这可能会更好
(a[n:n+1]+[default])[0]
这之所以有效,是因为如果a[n:]
是一个空列表,如果n => len(a)
下面是一个使用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
https://stackoverflow.com/questions/2492087
复制相似问题