solution
from itertools import teedef unpack_args(fn): return lambda t: fn(*t)def separate(fn, lx): return map( unpack_args( lambda i, ly: filter( lambda el: bool(i) == fn(el), ly)), enumerate(tee(lx, 2)))
test
[even, odd] = separate( lambda x: bool(x % 2), [1, 2, 3, 4, 5])print(list(even) == [2, 4])print(list(odd) == [1, 3, 5])