Как можно использовать лямбда-выражение с функцией `filter()`?

Лямбда-выражение в `filter()` используется для определения условия фильтрации элементов итерируемого объекта. Оно принимает один аргумент (элемент) и возвращает `True`, если элемент должен быть включен в результат, и `False` в противном случае.

Пример: numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
# even_numbers будет равно [2, 4, 6]

Лямбда-выражения очень хорошо подходят для использования с функцией filter(), потому что они позволяют кратко и элегантно определить условие фильтрации прямо внутри вызова filter(). filter() принимает два аргумента: функцию (или None) и итерируемый объект (список, кортеж, и т.д.). Функция, переданная в filter(), должна возвращать True или False для каждого элемента итерируемого объекта. filter() возвращает итератор, содержащий только те элементы, для которых функция вернула True.

Вот пример использования лямбда-выражения с 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)  # Output: [2, 4, 6, 8, 10]
  

В этом примере:

  • lambda x: x % 2 == 0 - это лямбда-выражение. Оно принимает один аргумент x и возвращает True, если x четное (остаток от деления на 2 равен 0), и False в противном случае.
  • filter(lambda x: x % 2 == 0, numbers) - применяет это лямбда-выражение к каждому элементу списка numbers.
  • list(...) преобразует итератор, возвращенный filter(), в список, чтобы мы могли его легко увидеть.

Другой пример, фильтрация списка строк, чтобы оставить только строки, начинающиеся с буквы "A":


    strings = ["Apple", "Banana", "Apricot", "Orange", "Avocado"]
    a_strings = list(filter(lambda s: s.startswith("A"), strings))
    print(a_strings)  # Output: ['Apple', 'Apricot', 'Avocado']
  

Лямбда-выражения позволяют создавать компактный и читаемый код, особенно когда условие фильтрации простое. Если условие становится более сложным, возможно, стоит рассмотреть возможность использования обычной функции для повышения читаемости и поддерживаемости.

0