a question about s[i:j] when i is negative

dracula571 dracula571 at gmail.com
Tue Oct 17 04:39:55 EDT 2006


mensanator at aol.com 写道:

> dracula571 wrote:
> > s[i:j] slice of s from i to j         (3), (4)
> >
> > (3)
> > If i or j is negative, the index is relative to the end of the string:
> > len(s) + i or len(s) + j is substituted. But note that -0 is still 0.
> >
> >
> > (4)
> > The slice of s from i to j is defined as the sequence of items with
> > index k such that i <= k < j. If i or j is greater than len(s), use
> > len(s). If i is omitted or None, use 0. If j is omitted or None, use
> > len(s). If i is greater than or equal to j, the slice is empty.
> >
> > i can't follow (3) very well.
> > for example:k = [1,2,3,4,5]
> > k[-1:2]=[]
> > k[-5:2]=[1,2]
> > but k[-6:2] = [1,2]
> > why k[-6:2] is [1,2]not [].
>
> Because 6 is greater then len(k), so when you ask
> for i=-6, you get i=-5 instead. And relative -5 is actually
> absolute 0 which is less than 2, so you do not get an
> empty slice.
>
> > i do follow (3),to make i positive by
> > plusing len(k) twice.But the result is not what i expect.why,or did i
> > misunderstand the rule of (3).
>
> See (4).
when compared with len(k), the value of i is a absolute value?
in this example,i used -6 to compare with len(k).
I misunstood the rule (4),and used (3) wrong by plusing len(k) twice to
make it positive ,that is -6 + len(k) + len(k) = 4.
Thanks




More information about the Python-list mailing list