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.
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])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With