一尘不染

为什么Python返回负列表索引?

python

如果我有包含10个元素的列表:

>>> l = [1,2,3,4,5,6,7,8,9,0]

为什么l [10]返回IndexError,而l [-1]返回0?

>>> l[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> l[0]
1
>>> l[-1]
0
>>> l[-2]
9

如果列表中没有以前的元素,我想做的就是抛出一个错误。


阅读 152

收藏
2020-12-20

共1个答案

一尘不染

在Python中,负列表索引表示从列表右边开始计数的项(即的l[-n]简写形式l[len(l)-n])。

如果发现需要负索引来指示错误,那么您可以简单地检查这种情况并亲自引发异常(或在那里进行处理):

index = get_some_index()
if index < 0:
    raise IndexError("negative list indices are considered out of range")
do_something(l[index])
2020-12-20