В Python лямбда-функция (или «анонимная функция») — это особый тип функции без имени. Например:
1 |
lambda : print('Hello, World!') |
Здесь мы создали лямбда-функцию, которая выводит текст Hello, World!
.
Объявление лямбда-функции в Python
Ключевое слово lambda (вместо def
) используется для создания лямбда-функции. Синтаксис объявления лямбда-функции:
1 |
lambda аргумент(ы) : выражение |
Здесь:
аргумент(ы)
— любое значение, переданное лямбда-функции;
выражение
— данный стейтмент выполняется и возвращается.
Рассмотрим пример:
1 |
greet = lambda : print('Hello, World!') |
Здесь мы определили лямбда-функцию, которую присвоили переменной с именем greet
.
Чтобы выполнить эту лямбда-функцию, нам нужно ее вызвать. Вот как мы можем вызвать лямбда-функцию:
1 2 |
# Вызываем лямбда-функцию greet() |
Вышеприведенная лямбда-функция просто выводит текст Hello, World!
.
Примечание: У этой лямбда-функции нет аргументов.
Рассмотрим пример вызова лямбда-функции в Python:
1 2 3 4 5 |
# Объявляем лямбда-функцию greet = lambda : print('Hello, World!') # Вызываем лямбда-функцию greet() |
Результат:
Hello, World!
Здесь мы определили лямбда-функцию и присвоили ее переменной greet
. Когда мы вызываем лямбда-функцию, выполняется функция print() внутри лямбда-функции.
Лямбда-функция с аргументами в Python
Подобно обычным функциям, лямбда-функция также может принимать аргументы. Например:
1 2 3 4 5 |
# Лямбда-функция, которая принимает 1 аргумент greet_user = lambda name : print('Hey there,', name) # Вызов лямбда-функции greet_user('Delilah') |
Результат:
Hey there, Delilah
Здесь мы присвоили лямбда-функцию переменной greet_user
. name
после ключевого слова lambda
указывает, что лямбда-функция принимает аргумент с именем name
.
Обратите внимание на вызов лямбда-функции:
1 |
greet_user('Delilah') |
Здесь мы передали строковое значение Delilah
нашей лямбда-функции, которое соответствует аргументу name
.
Как использовать лямбда-функцию с filter()?
Функция filter() в Python принимает функцию и итерируемый объект (списки, кортежи и строки) в качестве аргументов. Функция вызывается со всеми элементами в списке, и возвращается новый список, содержащий элементы, для которых функция определила значение True
.
Например:
1 2 3 4 5 6 |
# Программа фильтрации только четных элементов из списка 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 принимает функцию и итерируемый объект (списки, кортежи и строки) в качестве аргументов. Функция вызывается со всеми элементами в списке, и возвращается новый список, содержащий элементы, возвращаемые этой функцией для каждого элемента.
Например:
1 2 3 4 5 6 7 |
# Программа удвоения значений каждого элемента списка с помощью функции 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() удваивает значения элементов списка.