Python: разделить список на чётные и нечётные

8 класс 1 просмотр задан 27.05.2026 📚 редакторский

Дан список целых чисел a. Постройте два новых списка: один — с чётными элементами, другой — с нечётными. Сохраните исходный порядок.

1 ответ

Принятый ответ
Ответ

Два списка через list comprehension

Как это получилось

Способ 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]
🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти