split up a list by condition?

Reinhold Birkenfeld reinhold-birkenfeld-nospam at wolke7.net
Tue Jun 7 15:19:23 EDT 2005


Raymond Hettinger wrote:
>>> while writing my solution for "The python way?", I came across this fragment:
>>> vees = [c for c in wlist[::-1] if c in vocals]
>>> cons = [c for c in wlist[::-1] if c not in vocals]
>>>
>>> So I think: Have I overlooked a function which splits up a sequence
>>> into two,  based on a condition
> 
> Trying to compress too much into one line is not "the python way" ;-)

I know (there is a Guido quote about this, I just lost the source...)

> vees, cons = [], []
> for c in reversed(wlist):
>     if c in vocals:
>         vees.append(c)
>     else:
>         cons.append(c)
> 

Well, I've found a uglier solution,

vees, cons = [], []
[(vees, cons)[ch in vocals].append(ch) for ch in wlist]

Reinhold



More information about the Python-list mailing list