Отбор нечётных элементов списка с использованием lambda и функции filter

filter лениво оставляет элементы, для которых lambda возвращает истинное значение. Остаток x % 2 равен 1 у нечётных чисел и 0 у чётных.

Короткий ответ

Что ответить на собеседовании

filter лениво оставляет элементы, для которых lambda возвращает истинное значение. Остаток x % 2 равен 1 у нечётных чисел и 0 у чётных.

Подробный разбор

Ответ с пояснениями

Условие

Объясните, как работает следующий фрагмент кода.

data = [1, 2, 3, 4, 5]
odd_numbers = filter(lambda x: x % 2, data)

Ответ

filter лениво оставляет элементы, для которых lambda возвращает истинное значение. Остаток x % 2 равен 1 у нечётных чисел и 0 у чётных.

data = [1, 2, 3, 4, 5]
odd_numbers = filter(lambda x: x % 2, data)
print(list(odd_numbers))  # [1, 3, 5]

Результат filter в Python 3 — итератор, не готовый список. Он вычисляет элементы при обходе и исчерпывается после использования. Предикату не обязательно возвращать именно True или False: проверяется истинность результата.

Более явный вариант — lambda x: x % 2 != 0. Если сразу нужен список, [x for x in data if x % 2 != 0] часто читается проще.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее