Sequence splitting
Brad
schickb at gmail.com
Thu Jul 2 23:55:12 EDT 2009
On Jul 2, 8:14 pm, Paul Rubin <http://phr...@NOSPAM.invalid> wrote:
> schickb <schi... at gmail.com> writes:
> > def split(seq, func=None):
> > if func is None:
> > func = bool
> > t, f = [], []
> > for item in seq:
> > if func(item):
> > t.append(item)
> > else:
> > f.append(item)
> > return (t, f)
>
> untested:
>
> def split(seq, func=bool):
> xs = zip(seq, itertools.imap(func, seq))
> t = list(x for (x,y) in xs if y)
> f = list(x for (x,y) in xs if not y)
> return (t, f)
In my testing that is 3.5x slower than the original solution (and less
clear imo). I fixed my version to take a bool default. Either way, I'm
not really looking for additional ways to do this in Python unless
I've totally missed something. What I am considering is writing it in
C, much like filter.
-Brad
More information about the Python-list
mailing list