On Jul 2, 8:14 pm, Paul Rubin <http://phr...@nospam.invalid> wrote: > schickb <schi...@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 -- http://mail.python.org/mailman/listinfo/python-list