Delete all list entries of length unknown

Chris Rebert clp2 at rebertia.com
Mon Oct 5 05:47:38 CEST 2009


On Sun, Oct 4, 2009 at 8:09 PM, flebber <flebber.crue at gmail.com> wrote:
> Hi
>
> Can someone clear up how I can remove all entries of a list when I am
> unsure how many entries there will be. I have been using sandbox to
> play essentially I am creating two lists a and b I then want to add a
> to b and remove all b entries. This will loop and b will receive new
> entries add it to a and delete again.
>
> I am going wrong with slice and list deletion, I assign x = len(b) and
> then attempting to delete based on this. Here is my sandbox session.
> What part am I getting wrong?
>
> #>>>
> a = (1, 2, 3, 4)
> b = (5, 6, 7, 8)
<snip>
> x = len(b)
> #>>>
> del b[0:x]
> Traceback (most recent call last):
> Error:   File "<Shell>", line 1, in <module>
> Error: TypeError: 'tuple' object does not support item deletion

As the error message says, you're using *tuples*, not lists.
Tuples are immutable (i.e. they cannot be modified after creation) and
are created using parentheses.
Lists on the other hand are made using brackets: [1, 2, 3, 4] # like this

Additionally, the idiomatic way to clear a list (besides the more
obvious approach of just assigning a new, empty list to the variable)
is:
del a[:]

Leaving out the endpoints in the slice causes it to default to the
entire contents of the list.

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list