[docs] It may be a bug

Jorge Minguet jorgeminguet at gmail.com
Thu May 23 10:26:40 EDT 2019


Hi Julien,
Thank you for your answer. Cristal clear your explanation! I understand now
what I was doing wrong, thanks very much!
Best regards
Jorge Minguet

El mié., 22 may. 2019 a las 6:29, Julien Palard (<julien at palard.fr>)
escribió:

> Hi Jorge,
>
> > just to report last lines results seems to obtain some extra numbers. it
> may be a bug
>
> Slices in Python starts with an inclusive bound and end with an exclusive
> bound.
> Quoting the documentations, s[i:j] is:
> > The slice of s from i to j is defined as the sequence of items with
> index k such that `i <= k < j`
>
> Given:
>
>     alist = list(range(10))
>
> We can see that:
>
>     >>> alist[2:5]
>     [2, 3, 4]
>     >>> alist[5:2]
>     []
>
> Note that the second one, "from 5 to 2" is empty, yet starts at position
> 5, so when we assign to it, it will "erase" no values, yet have a place to
> put new values:
>
> In this case, we're replacing all items of index k such as 2 <= k < 5, so
> index 2, 3, 4, so we're replacing 3 items by two items, the resulting
> length is 9:
>
>     >>> alist = list(range(10))
>     >>> alist[2:5] = 'a', 'b'
>     >>> alist
>     [0, 1, 'a', 'b', 5, 6, 7, 8, 9]
>
> Here we're replacing all items of index k such as 5 <= k < 2, which can't
> exist, so we're replacing 0 items by two items, the resulting length is 12,
> note that they are not inserted randomly, they are inserted at the index
> where the empty slice starts:
>
>     >>> alist = list(range(10))
>     >>> alist[5:2] = 'a', 'b'
>     >>> alist
>     [0, 1, 2, 3, 4, 'a', 'b', 5, 6, 7, 8, 9]
>
> In your example:
>
> >>> v = []
> >>> v[0:5]=6,7,8,9,0
> >>> v[-1]=6,7
> >>> v
> [6, 7, 8, 9, (6, 7)]
> >>> v[-1:-5]  # An empty slice, so assigning to it will only add elements
> at position -1
> []
> >>> v[-1:-5]='a','b','c','d','e'
> >>> v
> [6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', (6, 7)]
> >>> v[-5:-1]  # A non empty slice, so assigning to it will replace b, c,
> d, and e with A, B, C, D and E
> ['b', 'c', 'd', 'e']
> >>> v[-5:-1]='A','B','C','D','E'
> >>> v
> [6, 7, 8, 9, 'a', 'A', 'B', 'C', 'D', 'E', (6, 7)]
>
> Does it helps?
>
> Bests,
> --
> Julien Palard
> https://mdk.fr
>
>

-- 
Saludos cordiales,
Jorge Minguet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/docs/attachments/20190523/2491093e/attachment.html>


More information about the docs mailing list