Функция
filter()
в Python позволяет отфильтровать элементы из последовательности на основе заданного условия. Она возвращает новую последовательность, содержащую только элементы, для которых функция-условие вернула значениеTrue
.
Синтаксис функции выглядит следующим образом:
filter(function, iterable)
где function
— это функция, которая будет применяться к каждому элементу iterable
, а iterable
— это последовательность, которую необходимо отфильтровать.
function
должна быть функцией, которая возвращает булево значение (True
или False
) в зависимости от того, должен ли элемент быть включен в результирующую последовательность. Эта функция может быть передана в качестве аргумента или определена как lambda-функция.
Пример использования filter()
с лямбда-функцией для фильтрации четных чисел из списка:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
#[2, 4, 6, 8, 10]
В этом примере, функцией-условием является лямбда-функция lambda x: x % 2 == 0
, которая проверяет, является ли число четным (остаток от деления на 2 равен 0). Функция-условие передается в filter()
в качестве первого аргумента, а список numbers
в качестве второго аргумента. filter()
возвращает новый итерируемый объект, содержащий только четные числа из исходного списка. Мы затем преобразуем этот итерируемый объект в список, с помощью функции list()
, и выводим результат.
Сделаем тоже самое, что и в примере выше, но с пользовательской функцией:
def is_even(num):
"""
Функция проверяет, является ли число четным.
"""
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# использование функции filter() для фильтрации четных чисел из списка numbers
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)
#[2, 4, 6, 8, 10]
Здесь функция is_even()
используется в качестве пользовательской функции для проверки четности числа. filter()
применяет функцию is_even()
к каждому элементу списка numbers
и возвращает только те элементы, для которых функция is_even()
возвращает True
. Результат фильтрации затем преобразуется в список при помощи функции list()
.
Для использования функции filter()
со списком словарей можно передать функцию-условие и список словарей в качестве аргументов.
Допустим, у нас есть список словарей, содержащий информацию о различных людях. Чтобы отфильтровать только тех людей, чей возраст меньше или равен 30 годам, можно использовать функцию-условие. Затем мы можем использовать filter()
, чтобы создать новый список, содержащий только тех людей, чей возраст меньше или равен 30 годам:
people = [{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 35},
{'name': 'David', 'age': 40}]
def age_less_than_30(person):
return person['age'] <= 30
filtered_people = list(filter(age_less_than_30, people))
#[{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
Плюсы:
filter()
позволяет быстро и удобно выбрать элементы из последовательности на основе заданного условия.Минусы:
filter()
. Если необходимо выполнить несколько условий отбора элементов, рекомендуется использовать циклы или условные выражения.Функция filter()
является мощным инструментом для отбора элементов из последовательности на основе заданного условия. Она позволяет быстро и удобно выбирать элементы и создавать новую последовательность. Однако, необходимо использовать ее с осторожностью и не злоупотреблять ее возможностями, чтобы не усложнить код и не ухудшить его читаемость.
Содержание: