Let's say I have a list of numbers and I want to split this list into two sublists: one for odd numbers and another one for evens.
evens, odds = [], []
for e in numbers:
if e % 2 == 0:
evens.append(e)
else:
odds.append(e)
I wonder if there is a one-liner for this problem while keeping the same order of complexity.
I tried using itertools.groupby
but the list needs to be ordered first so I'd be achieving a O(2n)
rather than O(n)
:
def is_even(n):
return n % 2 == 0
lst = sorted(lst, key=is_even)
grouper = itertools.groupby(lst, key=is_even)
lst1, lst2 = [list(v) for k, v in grouper]