On 2014-09-16 06:58, dieter wrote:
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.
It's nice to be able to say a.insert(p, x) even when p == len(a)
instead of having a special case:
if p == len(a):
a.append(x)
else:
a.insert(p, x)
Of course, what to do when p > len(a) is another matter.
--
https://mail.python.org/mailman/listinfo/python-list