List insert at index that is well out of range - behaves like append that too SILENTLY

dieter dieter at handshake.de
Tue Sep 16 07:58:03 CEST 2014


Harish Tech <technews.full at gmail.com> writes:

> Let me demonstrate the problem I encountered :
>
> I had a list
>
>  a = [1, 2, 3]
>
> when I did
>
> a.insert(100, 100)
>
> [1, 2, 3, 100]
>
> as list was originally of size 4 and I was trying to insert value at index
> 100 , it behaved like append instead of throwing any errors as I was trying
> to insert in an index that did not even existed .
>
>
> Should it not throw
>
> IndexError: list assignment index out of range

At least the documentation states that what you observe is the intended
behaviour.

According to the documentation, "a.insert(i, x)" is
equivalent to "a[i:i] = x" (i.e. a slice assignment) and
if in a slice "a[i:j]" "i" or "j" are larger then "len(a)",
then it is replaced by "len(a)".

If this is not what you want, derive your own list type
and override its "insert" method.




More information about the Python-list mailing list