Better solution

Michael Hudson mwh at python.net
Wed Aug 21 04:24:47 EDT 2002


"Bo M. Maryniuck" <b.maryniuk at forbis.lt> writes:

> On Tuesday 20 August 2002 17:39, Michael Hudson wrote:
> > >   [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.
> 
> Hmm... why the mostrosity? Is this example code is too ugly?
> >>> [x for x in ['', 'a', 'b','!', 'c'] if x not in ['!', '']]       
> ['a', 'b', 'c']

Oh, not *that* monstrosity, this one:

lst = ['', 'a', '', 'b', 'c', '', 'd']
map(lambda z:lst.pop(lst.index('')), range(0, lst.count('')))

I realise what I wrote was a tad confusing.

> Also what is [:]?

A slice.

Cheers,
M.

-- 
  Reading Slashdot can [...] often be worse than useless, especially
  to young and budding programmers: it can give you exactly the wrong
  idea about the technical issues it raises.
 -- http://www.cs.washington.edu/homes/klee/misc/slashdot.html#reasons



More information about the Python-list mailing list