Лямбда-функция (анонимная функция) в Python
В Python лямбда-функция — это особый тип функции без имени. Например,
lambda : print('Hello World')
Здесь мы создали лямбда-функцию, которая выводит 'Hello World'.
Прежде чем изучать лямбды, убедитесь, что знакомы с Функции в Python.
Объявление лямбда-функции
Мы используем ключевое слово lambda вместо def для создания лямбда-функции. Вот синтаксис её объявления:
lambda argument(s) : expression
Здесь:
argument(s)— любое значение, передаваемое в лямбда-функциюexpression— выражение, которое выполняется и возвращается
Рассмотрим пример:
greet = lambda : print('Hello World')
Здесь мы определили лямбда-функцию и присвоили её переменной с именем greet.
Чтобы выполнить эту лямбда-функцию, её нужно вызвать. Вот как вызвать лямбда-функцию:
# вызов лямбды
greet()
Лямбда-функция выше просто выводит текст 'Hello World'.
Примечание
Эта лямбда-функция не имеет аргументов.
Пример: лямбда-функция в Python
# объявление лямбда-функции
greet = lambda : print('Hello World')
# вызов лямбда-функции
greet()
# Вывод: Hello World
В приведённом примере мы определили лямбда-функцию и присвоили её переменной greet.
Когда мы вызываем лямбда-функцию, выполняется оператор print() внутри неё.
Лямбда-функция с аргументом
Как и обычные функции, lambda-функция может принимать аргументы. Например,
# лямбда, принимающая один аргумент
greet_user = lambda name : print('Hey there,', name)
# вызов лямбды
greet_user('Delilah')
# Вывод: Hey there, Delilah
В приведённом примере мы присвоили лямбда-функцию переменной greet_user.
Здесь name после ключевого слова lambda указывает, что лямбда-функция принимает аргумент с именем name.
Обратите внимание на вызов лямбда-функции:
greet_user('Delilah')
Здесь мы передали строковое значение 'Delilah' в нашу лямбда-функцию.
Затем выполняется оператор внутри лямбда-функции.
Часто задаваемые вопросы
Как использовать лямбда-функцию с filter()?
Функция filter() в Python принимает функцию и итерируемый объект (списки, кортежи и строки) в качестве аргументов.
Функция вызывается для всех элементов списка, и возвращается новый список, содержащий элементы, для которых функция возвращает True.
Рассмотрим пример:
# программа для фильтрации только чётных элементов из списка
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)
# Вывод: [4, 6, 8, 12]
Здесь функция filter() возвращает только чётные числа из списка.
Как использовать лямбда-функцию с map()?
Функция map() в Python принимает функцию и итерируемый объект (списки, кортежи и строки) в качестве аргументов.
Функция вызывается для всех элементов списка, и возвращается новый список, содержащий элементы, возвращённые этой функцией для каждого элемента.
Рассмотрим пример:
# Программа удваивает каждый элемент в списке с помощью map()
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list)
# Вывод: [2, 10, 8, 12, 16, 22, 6, 24]
Здесь функция map() удваивает все элементы в списке.