Что такое функция filter() в Python?

«Что такое функция filter() в Python?» — вопрос из категории Python, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

filter() — это встроенная функция Python, которая создает итератор из элементов итерируемого объекта, для которых заданная функция-фильтр возвращает True.

Синтаксис:

filter(function, iterable)

Практический пример: Отфильтруем только четные числа из списка.

numbers = [1, 2, 3, 4, 5, 6, 7, 8]

# Используем lambda-функцию как фильтр
even_numbers_iterator = filter(lambda x: x % 2 == 0, numbers)

# filter() возвращает итератор, поэтому для получения списка используем list()
print(list(even_numbers_iterator))  # Вывод: [2, 4, 6, 8]

Важные особенности:

  1. Функция-фильтр: Первый аргумент — функция, которая применяется к каждому элементу. Она должна возвращать True (элемент проходит) или False (элемент отбрасывается). Если передать None, filter() отберет только «истинные» элементы (те, для которых bool(element) равно True).
    mixed_list = [0, 1, False, True, '', 'hello', [], [1,2]]
    print(list(filter(None, mixed_list)))  # Вывод: [1, True, 'hello', [1, 2]]
  2. Возвращаемое значение: Функция возвращает итератор (объект filter), а не список. Это экономит память при работе с большими последовательностями. Для материализации результата нужна list(), tuple() или цикл for.
  3. Альтернатива — list comprehension: Часто аналогичную операцию записывают короче через генератор списка, что считается более «питоническим» стилем для простых случаев.
    # Эквивалент с list comprehension:
    even_numbers_list = [x for x in numbers if x % 2 == 0]

    filter() предпочтительнее в функциональном стиле программирования или когда функция-фильтр уже определена.