[Python-Dev] Negative index in insert()
Eric S. Raymond
esr@thyrsus.com
Fri, 24 Aug 2001 19:51:56 -0400
Given
>>> a = [1, 2, 3, 4]
because
>>> a[-2]
-3
I expected that a.insert(-2, 0) would yield [1, 2, 0, 3, 4]. It was a
rude shock to discover that
>>> a
[0, 1, 2, 3, 4]
In fact I think this may be the nastiest surprise Python has handed me since
I started using it.
The reference manual says "same as s[i:i] = [x] if i >= 0" which of course
doesn't cover the i < 0 case. David Beasley's reference says "Inserts x
at index i" which sounds like the behavior I was expecting but didn't get.
Is this a deliberate design choice, an oversight, or a plain bug? If it's
a choice, it's damn poorly documented -- this deserves at least a footnote
in the list methods table. If it's an oversight or bug, I volunteer to fix it.
--
<a href="http://www.tuxedo.org/~esr/">Eric S. Raymond</a>
"America is at that awkward stage. It's too late to work within the system,
but too early to shoot the bastards."
-- Claire Wolfe