Sequence splitting

Chris Rebert clp2 at
Fri Jul 3 10:12:20 CEST 2009

On Thu, Jul 2, 2009 at 11:31 PM, Brad<schickb at> wrote:
> On Jul 2, 9:40 pm, "Pablo Torres N." < at> wrote:
>> If it is speed that we are after, it's my understanding that map and
>> filter are faster than iterating with the for statement (and also
>> faster than list comprehensions).  So here is a rewrite:
>> def split(seq, func=bool):
>>         t = filter(func, seq)
>>         f = filter(lambda x: not func(x), seq)
>>         return list(t), list(f)
> In my simple tests, that takes 1.8x as long as the original solution.
> Better than the itertools solution, when "func" is short and fast. I
> think the solution here would worse if func was more complex.
> Either way, what I am still wondering is if people would find a built-
> in implementation useful?

FWIW, Ruby has Enumerable#partition, which does the same thing as
split() and has a better name IMHO.


More information about the Python-list mailing list