Casey <[EMAIL PROTECTED]> wrote: > From this, I would expect that x[::-1] would be identical to x[n:0:-1] > (n and 0 being the "end" values, with the order switched due to the > negative step value). But the clause that "(but never including j)" > means that x[n:0:-1] excludes the 1st element of x, x[0]. A quick > test in ipython confirms that "abc"[3:0:-1] => "cb", not "cba". > Changing the "end" value to x[n:-1:-1] results in an empty string. > > So my question is: "what exactly is [::-1] shorthand for"? Or is it a > special case, in which case why isn't it defined as such in the > library?
You made a mistake thinking that the first omitted value maps to 'n': in fact it maps to -1. the invariant that you are looking for is that for all non-negative a, b: x[a:b:1] reversed is x[-len(x)+b-1:-len(x)+a-1:-1] x[::1] is equivalent to x[0:len(x):1] therefore x[::-1] is the same as: x[-len(x)+len(x)-1:-len(x)+0-1:-1] which is just: x[-1:-len(x)-1:-1] -- http://mail.python.org/mailman/listinfo/python-list