Ответ
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]
Важные особенности:
- Функция-фильтр: Первый аргумент — функция, которая применяется к каждому элементу. Она должна возвращать
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]] - Возвращаемое значение: Функция возвращает итератор (объект
filter), а не список. Это экономит память при работе с большими последовательностями. Для материализации результата нужнаlist(),tuple()или циклfor. - Альтернатива — list comprehension: Часто аналогичную операцию записывают короче через генератор списка, что считается более «питоническим» стилем для простых случаев.
# Эквивалент с list comprehension: even_numbers_list = [x for x in numbers if x % 2 == 0]filter()предпочтительнее в функциональном стиле программирования или когда функция-фильтр уже определена.