Метод filter() фильтрует элементы из итерируемого объекта (например, списка, кортежа или строки) на основе критериев функции. Как работает функция filter() в Python? Она возвращает итератор, содержащий только те элементы, которые удовлетворяют заданному условию.
Синтаксис
|
1 2 |
filter(function, iterable) |
Параметры
- Параметр function должен запускаться для каждого элемента в итерируемом объекте. function проверяет, возвращают ли элементы итерируемого объекта True или False. Если None, function по умолчанию использует функцию Identity, которая возвращает False.
- Параметр iterable— это фильтруемый параметр. Итерируемый объект, который необходимо отфильтровать, может быть структурой данных Python, такой как набор, список, кортеж или контейнер любых итераторов.
Пример функции filter в Python
|
1 2 3 4 5 6 7 8 9 10 |
nums = [21, 19, 18, 46, 6, 29] def checkEven(x): if x % 2 == 0: return True else: return False data = filter(checkEven, nums) print(list(data)) |
В приведенном выше коде мы определили список и функцию, которая принимает один параметр и проверяет этот элемент, является ли он четным. Если это True, он вернет true, и мы получим этот элемент в объекте данных, а затем сможем преобразовать его в список.
Затем метод filter() передает каждое целое число методу checkEven(), чтобы проверить, возвращает ли оно значение True или False. В конечном итоге он создает итератор тех, которые возвращают true.
Выход

Пример 2
Мы использовали встроенную лямбда-функцию внутри Python filter(), чтобы найти в списке все числа, делящиеся на 2. В Python анонимная функция означает, что функция не имеет имени. См. приведенный ниже пример метода filter() с анонимной функцией.
Если мы используем лямбда-функцию, то размер кода по сравнению с приведенным выше кодом уменьшается до 3 строк.
|
1 2 3 4 5 6 |
integers = [21, 19, 18, 46, 6, 29] even = list(filter(lambda x: x % 2 == 0, integers)) print(even) |
Выход

Метод filter() возвращает итератор, прошедший проверку функции для каждого элемента в итерируемом объекте. Возвращаемые элементы — это те, которые прошли проверку.
