Функция filter( ) в Python

Обложка к статье "Функция filter( ) в Python"

Функция filter в Python используется для создания итератора, который фильтрует элементы из переданного итерируемого объекта, возвращая только те, для которых функция function возвращает True.

Синтаксис

filter(function, iterable)

Параметры

  • function: Функция, применяемая к каждому элементу итерируемого объекта. Должна возвращать True или False. Если передано значение None, используется встроенная функция identity, которая просто возвращает значение элемента.
  • iterable: Итерируемый объект (список, кортеж, строка и т.д.), элементы которого будут фильтроваться.

Возвращаемое значение

Функция возвращает итератор, содержащий те элементы из iterable, для которых function вернула True.

Примеры использования

Пример 1: Фильтрация четных чисел

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # Вывод: [2, 4, 6, 8, 10]

Пример 2: Фильтрация строк по длине

words = ['apple', 'banana', 'cherry', 'date']
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words))  # Вывод: ['banana', 'cherry']

Пример 3: Фильтрация значений с использованием функции

def is_positive(number):
    return number > 0

numbers = [-10, -5, 0, 5, 10]
positive_numbers = filter(is_positive, numbers)
print(list(positive_numbers))  # Вывод: [5, 10]

Пример 4: Фильтрация значений None

values = [0, 1, None, 2, '', 3, False, 4]
non_none_values = filter(None, values)
print(list(non_none_values))  # Вывод: [1, 2, 3, 4]

Пример 5: Фильтрация пользователей по возрасту из словаря

users = [
    {'name': 'Alice', 'age': 30},
    {'name': 'Bob', 'age': 17},
    {'name': 'Charlie', 'age': 25},
    {'name': 'David', 'age': 16}
]

adults = filter(lambda user: user['age'] >= 18, users)
print(list(adults))
# Вывод: [{'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 25}]

Важные замечания

  1. Ленивое выполнение: filter возвращает итератор, а не список. Это означает, что фильтрация выполняется лениво: элементы обрабатываются по мере итерирования.
  2. Совместимость с функциями высшего порядка: filter хорошо работает с лямбда-функциями и другими функциями высшего порядка, такими как map и reduce.

Оцените статью
( Пока оценок нет )
Обучение Python
Добавить комментарий