clear derived list

Jp Calderone exarkun at intarweb.us
Wed Mar 12 00:39:11 CET 2003


On Tue, Mar 11, 2003 at 05:08:26PM -0600, John Hunter wrote:
> 
> I have a class derived from a list.  I want to be able to set the list
> from another list, first clearing the existing members.  I don't see
> an analog to the clear method of dictionaries.
> 
> Here is what I am doing now
> 
> class mylist(list):
>     def set(self, seq):
>         # flush the old list
>         [self.pop() for i in range(len(self))]
>         self.extend(seq)

  Aside from the obvious problem, I want to point out that this is a
terrible abuse of list comprehensions.  This is not the point.  A good rule
of thumb is that if you're not storing the result of a list comprehension,
you should -not- be using a list comprehension.

  Now, here are a couple alternatives:

    del self[:]
    self.extend(seq)

  or

    self[:] = seq

  Jp

-- 
A disciple of another sect once came to Drescher as he was eating his
morning meal. "I would like to give you this personality test," said the
outsider, "because I want you to be happy." Drescher took the paper that was
offered him and put it into the toaster: "I wish the toaster to be happy, 
too."
-- 
 up 8 days, 15:59, 8 users, load average: 0.22, 0.13, 0.04





More information about the Python-list mailing list