Harish Tech <technews.f...@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. -- https://mail.python.org/mailman/listinfo/python-list