Here is where I get caught each time with list notation.
(I realized as I was writing this it isn't the slice notation but the index
notation that gets me)
x[:3] returns a list with the first three elements in it.
x[-3:] returns a list with the last three elements in it.
x[2] returns the third element in a list, but
x[-3] returns the third to the last element in a list
To illustrate it another way
x = [1,2,3,4,5,6,7,8,9]
y = [9,8,7,6,5,4,3,2,1]
The way I look at it (and this may be where the problem lies) is that the
[-n] notation is an inverse of sorts of the [n] notation.
Slicing does work that way:
x[:3] = [1,2,3] (3 elements)
y[-3:] = [3,2,1] (3 elements)
However, indexing doesn't
x[3] = 4 (0 based indexing)
y[-3] = 3 (could be viewed as -1 based indexing)
So, I can't take my model for the slices and translate it to indexing, even
though the notation is very similar.
It just seems a bit inconsistent to me, and as I said earlier, I haven't
been able to get it. I am not very good at just memorizing something and
saying that's just the way it is, I need more, and I haven't figured out
what that more is for this issue.
Just some food for thought.
Trent Oliphant