a = ["alpha", "beta", "gamma"]
del a[2:2]
a
Now, i expected the result to be that the
"beta" element has been removed. Obviously,
Python thinks otherwise. Why?!
Elaboration:
I wonder why such an unintuitive effect has
been implemented. I'm sure it's for a very
good reason not clear to me due to my
ignorance. Alternatively - my expectations
are not so intuitive as i think. :)
--
Regards
Konrad Viltersten
--------------------------------
sleep - a substitute for coffee for the poor
ambition - lack of sense to be lazy
It's the Phillips vs. the flathead. Is b in x[a:b:c] an endpoint or a
distance?
This is Python too; you're welcome to implement:
- b means length
- one-based indices
- inclusive
- b out of bounds exceptions
A slice object (a,b,c) is passed to
whatevercollection.__getitem__, .__setitem__, or .__delitem__.
>>> a = ["alpha", "beta", "gamma"]
>>> a[2:2]
[]
>>>
You would have got the result you expected with
del a[2]
or
del a[2:3]
or
del a[-1]
or ...
Remember that slices are specified as half-open intervals. So a[m:n]
includes m-n elements, those indexed from m to n-1.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
Got it. Thanks!
>I'm reading the docs and at 5.2 the del
>statement is discussed. At first, i thought
>i've found a typo but as i tried that
>myself, it turns it actually does work so.
>
> a = ["alpha", "beta", "gamma"]
> del a[2:2]
> a
>
>Now, i expected the result to be that the
>"beta" element has been removed. Obviously,
>Python thinks otherwise. Why?!
>
>Elaboration:
>I wonder why such an unintuitive effect has
>been implemented. I'm sure it's for a very
>good reason not clear to me due to my
>ignorance. Alternatively - my expectations
>are not so intuitive as i think. :)
I think it should say
del a[1:2]
then it works
While i'm thankful for the advice, i need to
point out that the question wasn't "how to"
but "why". Anyhow, it's been explained as a
matter of definition of a "slice".