Problem with all proposed solutions is that it will scan and apply the filtering function twice. I'd make a simple small function like this:
def split_into_two_lists(lst, f): a = [] b = [] for elem in lst: if f(elem): a.append(elem) else: b.append(elem) return a, b
That way you are not processing anything twice and also are not repeating code.