Assignment to slice

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Rich Krauter

    Assignment to slice


    I do not understand why python behaves the way it does
    in the following code:

    Here, Python doesn't like that I'm assigning
    out-of-range. OK. That's fine.[color=blue][color=green][color=darkred]
    >>> x = []
    >>> x[5] = 3[/color][/color][/color]
    Traceback (most recent call last):
    File "<interacti ve input>", line 1, in ?
    IndexError: list assignment index out of range

    However, the following seems very strange. Assigning
    to a slice, over non-existent array indexes, sets x[0]
    and x[1].[color=blue][color=green][color=darkred]
    >>> x[2:5] = [3,4]
    >>> x[/color][/color][/color]
    [3,4][color=blue][color=green][color=darkred]
    >>> x[1000:9000] = [5]
    >>> x[/color][/color][/color]
    [3, 4, 5]

    Why does assigning to a slice of non-existent array
    elements fill in the array, starting with the first
    empty array position? (Acts like [].append() or
    [].extend()?)

    Why not raise an out-of-bounds exception here too?
    Wouldn't that be more consistent with the first case,
    in which I tried to assign out-of-range, and got an
    exception?

    IMO, at least the first index in the slice should be
    required to exist in the array. If not, raise an
    exception. That way, assigning to the slice fills in
    the array in a predicatable way without having to do
    len() checks first to ensure that you know where in
    the array the slice is actually going to be inserted.

    But I'm sure it is the way it is for a good reason.
    Hopefully someone can clue me in.

    Thank you in advance.

    Rich




    _______________ _______________ ____
    Do you Yahoo!?
    Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes


Working...