Oh, come on, the solution is trivial.
[x for x in my_list if x % 2 == 0] + [x for x in my_list if x % 2 != 0]
It is a great question for talking about performance tuning an algorithm, but just seems bizarre to be pushing for abstraction on this problem.
lambda f: [x for x in my_list if f(x)] + [x for x in my_list if not f(x)]