Функция filter
Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 73 из 78.
Функция filter() принимает две основные вещи:
- Функцию (которая содержит инструкции для проверки каждого элемента)
- Последовательность элементов (например, list или любую коллекцию элементов)
Функция проверяет каждый элемент последовательности по очереди и оставляет только те, которые проходят проверку функции (когда функция возвращает True).
Например:
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6] # Это просто список чисел
even_numbers = filter(is_even, numbers)
print(list(even_numbers))
# Вывод: [2, 4, 6]Что здесь произошло:
- У нас есть список чисел: [1, 2, 3, 4, 5, 6]
- Функция `filter` берет каждое число по одному
- Она пропускает каждое число через нашу функцию `is_even`
- Если функция возвращает True, она сохраняет это число
- Если функция возвращает False, она отбрасывает это число
Это можно представить как сито:
- Число 1 входит →
is_evenвозвращает False → число отбрасывается - Число 2 входит →
is_evenвозвращает True → число сохраняется
- Число 3 поступает на вход →
is_evenвозвращает False → число отбрасывается И так далее...
Вы также можете использовать быструю однострочную function (называемую lambda) вместо определения отдельной function:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda n: n % 2 == 0, numbers)
print(list(even_numbers))
# Вывод: [2, 4, 6]Функция filter() работает с любой коллекцией элементов — не только с числами. Вот пример со строками:
words = ["apple", "banana", "cherry", "date"]
long_words = filter(lambda word: len(word) > 5, words)
print(list(long_words))
# Output: ["banana", "cherry"]Задание
ЛегкоСоздайте функцию с именем get_long_strings, которая принимает список строк strings в качестве аргумента. Функция должна использовать функцию filter() вместе с lambda-функцией, чтобы выбрать строки, длина которых больше 5. Функция должна возвращать список, содержащий выбранные строки.
Попробуйте сами
def get_long_strings(strings):
# Используйте filter() с лямбда-функцией для выбора строк длиной больше 5
# Замените пустой список ниже на это выражение
long_strings = []
# Верните список выбранных строк
return list(long_strings)В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком выполнения
1Изучение переменных
КонстантыМножественное присваиваниеОбмен значениями переменныхПеременные-заполнителиОкругление чиселПриведение к списку4Приложение «Книга контактов»
Показать менюДобавить контакт7Множества. Часть 2
Математические операции. Часть 1Математические операции. Часть 2Повторение — Охота за сокровищамиПодмножества и надмножестваИтерация по множествамПовторение — Трекер турнира10Базовые генераторы списков
СинтаксисСоздание простых списковДобавление условийИспользование агрегации данныхПовторение — Дом списковПовторение — Элементы свободы13Система управления запасами
Обзор проектаДобавление товара2Словари. Часть 1
Что такое словарь?Создание словаряДоступ к значениямИзменение словарейИтоги — Менеджер рецептов5Продвинутое принятие решений
Тернарный операторПроверка вхожденияПроверка идентичностиОшибки отступовПовторение — Фильтр отпусков8Менеджер записей студентов
Обзор проектаДобавить студента11Продвинутые функции
Возврат нескольких значенийLambda-функции. Часть 1Lambda-функции. Часть 2Задача на повторение — Lambda-сортировкаРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного списка14Функции высшего порядка
Функция mapФункция filterПовторение — Валидатор emailПовторение — Обработчик чисел3Словари. Часть 2
Методы словарейВложенные словариПроверка наличия ключейПеребор словарей в циклеПовторение: счетчик частоты6Множества. Часть 1
Что такое множество?Основные операцииМетоды множествПовторение — удаление дубликатов9Продвинутая агрегация данных
Использование SumПоиск минимума и максимумаЭффективная сортировка данныхПовторение — Dictionary SorterПотренируйтесь самостоятельно: Онлайн-компилятор Python