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