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']
Лямбда-выражения позволяют создавать компактный и читаемый код, особенно когда условие фильтрации простое. Если условие становится более сложным, возможно, стоит рассмотреть возможность использования обычной функции для повышения читаемости и поддерживаемости.