[python] Python: split a list based on a condition?

If your concern is not to use two lines of code for an operation whose semantics only need once you just wrap some of the approaches above (even your own) in a single function:

def part_with_predicate(l, pred):
    return [i for i in l if pred(i)], [i for i in l if not pred(i)]

It is not a lazy-eval approach and it does iterate twice through the list, but it allows you to partition the list in one line of code.