Лямбда-функция (анонимная функция) в 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() удваивает все элементы в списке.