Как использовать функцию filter() в Python
Узнайте, как использовать функцию Python filter() для извлечения элементов из коллекций. Сравните фильтр со списками и лямбда-обратными вызовами.
Обзор
Фильтрация данных — основная задача прикладного программирования. Часто вам придется выполнять поиск по списку и извлекать элементы, соответствующие определенным критериям, например извлечение активных пользователей из базы данных профилей или фильтрацию отрицательных чисел из журналов датчиков. Для этой цели Python предоставляет встроенный функциональный инструмент под названием filter().
Функция filter(function, iterable) принимает в качестве аргументов функцию фильтрации и итерируемый объект. Аргумент функции должен возвращать логическое значение («True» или «False») для каждого элемента. Функция filter() оценивает каждый элемент, сохраняя только те, которые имеют значение True, и возвращает объект-итератор (объект filter), содержащий результаты.
Как и `map()`, `filter()` лениво оценивает элементы. Если вам срочно нужен стандартный список, вы преобразуете вывод с помощью конструктора list(): list(filter(func, data))`. Если вы передадите None в качестве параметра функции (например, filter(None, data)), Python автоматически отфильтрует все ложные элементы, что является отличным способом очистки пустых значений.
Код и вывод выполнения
Этот скрипт демонстрирует фильтрацию числовых массивов, извлечение элементов словаря и отбрасывание ложных пустых строк с помощью filter().
numbers = [-5, -2, 0, 3, 8, -1]
# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)
# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)
# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']Пошаговая реализация
- Определите функцию, которая принимает элемент и возвращает логическое значение, представляющее критерии фильтра.
- Вызовите filter(function, iterable), чтобы создать ленивый итератор совпадений.
- Приведите полученный объект фильтра к списку, используя list(filter(...)) если вам нужно манипулировать записями.
- Передайте None в качестве аргумента функции, чтобы отфильтровать все ложные значения (например, None, 0 и пустые строки).
Часто задаваемые вопросы
Что произойдет, если функция, переданная в filter(), не вернет логическое значение?
Python оценивает достоверность возвращаемого значения. Если значение оценивается как True в логическом контексте, элемент сохраняется.
Должен ли я использовать фильтр() или понимание списка?
Понимание списка с условием if (например, [x для x в списке if условие]) часто предпочтительнее для удобства чтения, но filter() является чистым и высокопроизводительным, особенно при использовании существующих встроенных функций.
Связанные темы
Узнайте, как использовать лямбда-функции в Python. Освойте анонимные функции, встроенные обратные вызовы и сортировку данных списка с помощью лямбда-ключей.
Как использовать понимание списков в PythonУзнайте, как использовать генераторы списков в Python. Создавайте краткие циклы, применяйте условные фильтры и создавайте матрицы с понятным визуальным синтаксисом.
Как использовать функцию map() в PythonУзнайте, как использовать функцию Python Map(). Научитесь применять функции к итерациям без написания циклов и сравнивать карту с пониманием списков.
Рекомендуемые ресурсы Python
Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.
Функции Python
Мастер-функции Python. Узнайте, как писать код многократного использования с использованием def, определять аргументы, возвращаемые значения и понимать область действия локально и глобально.
Шпаргалка по функциям математического модуля Python
Краткое справочное руководство по стандартной математической библиотеке Python. Узнайте, как использовать тригонометрические, логарифмические, округляющие и арифметические функции.
Python против JavaScript: какой язык программирования лучше?
Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.