Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Python return negative list indexes?

Tags:

python

If I have this list with 10 elements:

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

Why will l[10] return an IndexError, but l[-1] returns 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

What I want to do is throw an error if there are no previous elements in the list.

like image 436
jdickson Avatar asked Jun 27 '12 21:06

jdickson


1 Answers

In Python, negative list indices indicate items counted from the right of the list (that is, l[-n] is shorthand for l[len(l)-n]).

If you find you need negative indices to indicate an error, then you can simply check for that case and raise the exception yourself (or handle it then and there):

index = get_some_index()
if index < 0:
    raise IndexError("negative list indices are considered out of range")
do_something(l[index])
like image 65
Gareth Latty Avatar answered Sep 27 '22 20:09

Gareth Latty