Python lambda (анонимная функция)

Python используетlambdaдля создания анонимных функций.

Лямбда-функция — это небольшая, анонимная, встраиваемая функция, которая может иметь любое количество параметров, но может содержать только одно выражение.

Анонимным функциям не нужно использоватьdefключевое слово для определения полноценной функции.

лямбда-функции обычно используются для написания простых однострочных функций, часто применяются, когда функцию нужно передать в качестве параметра, например, в таких функциях, как map(), filter(), reduce() и т. д.

Особенности лямбда-функций:

  • Лямбда-функция анонимна; у неё нет имени функции, и её можно использовать, только присвоив её переменной или передав в качестве параметра другим функциям.
  • Лямбда-функция обычно содержит только одну строку кода, что делает её подходящей для написания простых функций.

Формат синтаксиса лямбда-функции:

lambda arguments: expression
  • lambda— это ключевое слово Python, используемое для определения лямбда-функций.
  • arguments— это список параметров, который может содержать ноль или более параметров, но должен стоять перед двоеточием (:), указанным ранее.
  • expression— это выражение, используемое для вычисления и возврата результата функции.

Следующая лямбда-функция не имеет параметров:

Пример

f = lambda: "Hello, world!" print(f()) # Вывод: Hello, world!

Результат вывода:

Hello, world!

В следующем примере используется lambda для создания анонимной функции, задаётся параметр функции a, функция вычисляет параметр a плюс 10 и возвращает результат:

Пример

x = lambda a : a + 10 print(x(5))

Результат вывода:

15

Лямбда-функция также может иметь несколько параметров, при этом параметры разделяются запятыми,разделены:

В следующем примере используется lambda для создания анонимной функции, параметры функции a и b перемножаются, и возвращается результат:

Пример

x = lambda a, b : a * b print(x(5, 6))

Результат вывода:

30

В следующем примере используется lambda для создания анонимной функции, параметры функции a, b и c складываются, и возвращается результат:

Пример

x = lambda a, b, c : a + b + c print(x(5, 6, 2))

Результат вывода:

13

Лямбда-функции обычно используются вместе со встроенными функциями, такими как map(), filter() и reduce(), для выполнения операций над коллекциями. Например:

Пример

numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, numbers)) print(squared) # Вывод: [1, 4, 9, 16, 25]

Результат вывода:

[1, 4, 9, 16, 25]

Используйте лямбда-функцию с filter() для фильтрации чётных чисел:

Пример

numbers = [1, 2, 3, 4, 5, 6, 7, 8] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) # Вывод: [2, 4, 6, 8]

Результат вывода:

[2, 4, 6, 8]

Далее показано, как использовать reduce() и lambda-выражение для вычисления накопленного произведения последовательности:

Пример

from functools import reduce numbers = [1, 2, 3, 4, 5] # Использовать reduce() и lambda-функцию для вычисления произведения product = reduce(lambda x, y: x * y, numbers) print(product) # Вывод: 120

Результат вывода:

120

В приведенном выше примере функция reduce() перебирает список numbers и использует lambda-функцию для непрерывного обновления накопленного результата, в конечном итоге получая1 * 2 * 3 * 4 * 5 = 120результат.

Другие расширения