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