Python list / sublist selection -1 weirdness

Matti Lyra picture Matti Lyra · Aug 10, 2010 · Viewed 204.3k times · Source

So I've been playing around with python and noticed something that seems a bit odd. The semantics of -1 in selecting from a list don't seem to be consistent.

So I have a list of numbers

ls = range(1000)

The last element of the list if of course ls[-1] but if I take a sublist of that so that I get everything from say the midpoint to the end I would do

ls[500:-1]

but this does not give me a list containing the last element in the list, but instead a list containing everything UP TO the last element. However if I do

ls[0:10]

I get a list containing also the tenth element (so the selector ought to be inclusive), why then does it not work for -1.

I can of course do ls[500:] or ls[500:len(ls)] (which would be silly). I was just wondering what the deal with -1 was, I realise that I don't need it there.

Answer

dugres picture dugres · Aug 10, 2010

In list[first:last], last is not included.

The 10th element is ls[9], in ls[0:10] there isn't ls[10].