When slicing in python, omitting the end
portion of the slice (ie the end in list[:end:]
) results in end
being defined as "the size of the string being sliced." *
However, this doesn't seem to hold true when using the step
argument (the step in list[::step]
) in a slice, at least when the step
argument is -1
. A simple example:
>>> l = [1, 2, 3]
>>> l[::-1]
[3, 2, 1]
>>> l[:len(l):-1]
[]
This indicates that in the case of a step
argument being passed, an omitted end
value is not equivalent to explicitly passing the size of the object being sliced.
Perhaps this is just a failure of mine reading the documentation, but I'd like to understand why my above example seems to contradict the Python documentation about omitting end
values in slices, and ideally where this different is documented.
* Slice indices have useful defaults; an omitted first index defaults to zero, an omitted second index defaults to the size of the string being sliced.