Assignment to slice

Rich Krauter rmkrauter at yahoo.com
Wed Jan 21 12:01:42 EST 2004


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.
>>> x = []
>>> x[5] = 3
Traceback (most recent call last):
  File "<interactive 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]. 
>>> x[2:5] = [3,4]
>>> x
[3,4]
>>> x[1000:9000] = [5]
>>> x
[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
http://hotjobs.sweepstakes.yahoo.com/signingbonus




More information about the Python-list mailing list