Menu
Coddy logo textTech

Функция filter

Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 73 из 78.

Функция filter() принимает две основные вещи:

  1. Функцию (которая содержит инструкции для проверки каждого элемента)
  2. Последовательность элементов (например, 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. Число 1 входит → is_even возвращает False → число отбрасывается
  2. Число 2 входит → is_even возвращает True → число сохраняется
  1. Число 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"]
challenge icon

Задание

Легко

Создайте функцию с именем get_long_strings, которая принимает список строк strings в качестве аргумента. Функция должна использовать функцию filter() вместе с lambda-функцией, чтобы выбрать строки, длина которых больше 5. Функция должна возвращать список, содержащий выбранные строки.

Попробуйте сами

def get_long_strings(strings):
    # Используйте filter() с лямбда-функцией для выбора строк длиной больше 5
    # Замените пустой список ниже на это выражение
    long_strings = []
    
    # Верните список выбранных строк
    return list(long_strings)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор Python