Extended slices and indices
GavinCrooks at gmail.com
GavinCrooks at gmail.com
Sat Sep 23 20:36:11 EDT 2006
The indices method of slice doesn't seem to work quite how I would
expect when reversing a sequence.
For example :
>>> s = '01234'
>>> s[::-1]
'43210'
>>> s[slice(None,None,-1) ]
'43210'
So a slice with a negative step (and nothing else) reverses the
sequence. But what are the
corresponding indices?
>>> slice(None,None,-1).indices(len(s))
(4, -1, -1)
That looks O.K. The start is the last item in the sequence, and the
stop is one before the beginning of the sequence. But these indices
don't reverse the string:
>>> s[4:-1:-1]
''
Although they give the correct range:
>>> range( 4, -1,-1)
[4, 3, 2, 1, 0]
It would appear that there is no set of indices that will both reverse
the string and produce the correct range!
Is this a bug or a feature?
GEC
See also: http://www.python.org/doc/2.3.5/whatsnew/section-slices.html
More information about the Python-list
mailing list