Better solution

holger krekel pyth at devel.trillke.net
Tue Aug 20 17:59:58 CEST 2002


Michael Hudson wrote:
> > > Well, I want to throw away a _same_ garbage from a list with less 
> > > of coding.
> > > This is current code, sure not the best ;-) Is any better solutions?
> > > 
> > > --------------8<------------------------
> > > lst = ['', 'a', '', 'b', 'c', '', 'd']
> > > map(lambda z:lst.pop(lst.index('')), range(0, lst.count('')))
> > > --------------8<------------------------
> > > 
> > > Now lst equals to ['a', 'b', 'c', 'd'].
> > 
> > These would also do the trick and be less cryptic:
> > 
> >   filter(lambda x: x, lst)
> 
> Or equivalently filter(None, lst).
> 
> >   [x for x in lst if x]
> 
> If you want to mutate the list, I'd say:
> 
> lst[:] = filter(None, lst)
> 
> is better than the monstrosity above.

why the '[:]'? 

doesn't seem to make any difference here unless
filter is allowed to return the same lst-object.

    holger




More information about the Python-list mailing list