Extended slices and indices
Robert Kern
robert.kern at gmail.com
Sat Sep 23 22:10:42 EDT 2006
GavinCrooks at gmail.com wrote:
> Robert Kern wrote:
>> I'd say bug in the .indices() method. The meaning of [4:-1:-1] is unavoidable
>> different than [::-1] since the index -1 points to the last element, not the
>> imaginary element before the first element. Unfortunately, there *is* no
>> concrete (start, stop, step) tuple that will emulate [::-1].
>
> After some more experimenting, it seems that [L-1:-L-1:-1] will reverse
> a sequence of length L.
Ah, yes. Good point.
> But slice(L-1,-L-1,-1).indices(L) gives (L-1,
> -1,-1) which will not reverse the sequence. And range(L-1, -L-1, -1) is
> totally off, but range(L-1,-1,-1) is correct.
>
> Seems like a bug (or an odd feature) of extended slicing of strings and
> other built in sequences.
It's not a bug with extended slicing. -1 has a very definite meaning when used
as an index. The result of applying [4:-1:-1] is completely consistent with that
meaning. The problem is with .indices() for giving you something that is
inconsistent with that meaning. range() is neither here nor there; it's
semantics are simply different.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list