Способ 1 — два list comprehension:
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
evens = [x for x in a if x % 2 == 0]
odds = [x for x in a if x % 2 == 1]
print(evens) # [4, 2, 6]
print(odds) # [3, 1, 1, 5, 9, 5, 3, 5]
Способ 2 — за один проход (быстрее на больших данных):
evens, odds = [], []
for x in a:
if x % 2 == 0:
evens.append(x)
else:
odds.append(x)
За один проход — $O(n)$. Два comprehension'а тоже $O(n)$, но проходят дважды — для больших списков чуть медленнее.
Способ 3 — через словарь:
groups = {0: [], 1: []}
for x in a:
groups[x % 2].append(x)
evens, odds = groups[0], groups[1]
Если нужно сохранить только индексы:
even_idx = [i for i, x in enumerate(a) if x % 2 == 0]