[Tutor] Array slices in python with negative step

spir denis.spir at free.fr
Mon Jan 11 18:02:50 CET 2010

On Mon, 11 Jan 2010 21:50:10 +0530
vishwajeet singh <dextrous85 at gmail.com> wrote:

> Hello All,
> I am bit confuse how the slice works in case a negative step is supplied
> a = 'abcde'
> a[::-1] gives me edcba
> but [4:0:-1] gives me edcb
> while searching net I came accross something which said the following:
> If a negative stride is specified and the starting or stopping indices are
> omitted, they default to ``end of axis'' and ``beginning of axis''
> respectively.
> In my case 4 is end of axis and 0 is begining of the axis so a[::-1] should
> be equivalent to [4:0:-1] but result which I get in both the cases does not
> validate.

Your interpretation is wrong. In your case, 4 is start index, 0 is end index (as obviously shown by the result you get). Step -1 lets you step backwards, but this does not change the fact that the end-index is the second argument of the slice, right? Now, python work with (right-side) half-open intervals, meaning that the second border is excluded (s[0:4] would return "abcd"). Which means in your case you won't get a[0] in the result.
Hope I'm clear... It can be a bit misleading at start but, as it's consistent, once you get used to it all works fine ;-)


la vita e estrany


More information about the Tutor mailing list