🔍 Как работает filter в питоне: полное руководство 2021
Функция filter
в Python используется для фильтрации элементов последовательности с использованием заданного условия.
Принимает два аргумента: функцию-условие и итерируемый объект, например список или кортеж.
Используется следующий синтаксис:
filtered = filter(условие, итерируемый_объект)
Функция-условие должна возвращать True
или False
для каждого элемента итерируемого объекта. Если значение функции-условия равно True
, элемент проходит фильтрацию и включается в результирующий итерируемый объект filtered
.
Пример:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_even(n):
return n % 2 == 0
even_numbers = list(filter(is_even, numbers))
print(even_numbers) # [2, 4, 6, 8, 10]
В примере выше, функция-условие is_even
возвращает True
, если число является четным. Используя filter
с этой функцией и итерируемым объектом numbers
, мы получаем новый список, содержащий только четные числа.
Детальный ответ
Фильтр - это встроенная функция в Python, которая позволяет отфильтровать элементы последовательности на основе заданного условия.
Вот простой пример использования фильтрации в Python:
numbers = [1, 2, 3, 4, 5, 6]
def is_even(n):
return n % 2 == 0
even_numbers = list(filter(is_even, numbers))
print(even_numbers)
В этом примере у нас есть список чисел от 1 до 6. Мы определяем функцию is_even, которая возвращает истину, если число является четным. Затем мы используем функцию filter, передавая ей функцию is_even и список чисел в качестве аргументов. Filter возвращает новый итератор, содержащий только четные числа из исходного списка. Мы преобразуем этот итератор в список с помощью функции list и печатаем результат: [2, 4, 6].
Пример выше демонстрирует, что функция фильтрации принимает два аргумента: функцию условия и последовательность, на которую нужно применить это условие. Функцию условия можно определить как именную функцию, анонимную функцию (lambda-функцию) или даже встроенную функцию.
Вот еще несколько примеров:
names = ["Alice", "Bob", "Charlie", "Dave", "Eve"]
# Фильтрация имен, начинающихся на букву "A"
a_names = list(filter(lambda name: name.startswith('A'), names))
print(a_names)
# Фильтрация отрицательных чисел
numbers = [-1, 2, -3, 4, -5, 6]
negative_numbers = list(filter(lambda x: x < 0, numbers))
print(negative_numbers)
В первом примере мы используем lambda-функцию, чтобы проверить, начинается ли имя с буквы "A". Результатом будет список имен, начинающихся на "A". Во втором примере мы фильтруем отрицательные числа из списка чисел.
Основная идея фильтра в том, что он применяет заданную функцию к каждому элементу последовательности и возвращает только элементы, для которых функция вернула истину. Это позволяет удобно и эффективно фильтровать и обрабатывать данные в Python.