Автор оригинала: Nicholas Samuel.
Что такое Лямбда-функции?
В Python мы используем ключевое слово lambda
для объявления анонимной функции, поэтому мы называем их “лямбда-функциями”. Анонимная функция относится к функции, объявленной без имени. Хотя синтаксически они выглядят по-разному, лямбда-функции ведут себя так же, как и обычные функции, объявленные с помощью ключевого слова def
. Ниже приведены характеристики лямбда-функций Python:
- Лямбда-функция может принимать любое количество аргументов, но они содержат только одно выражение. Выражение-это фрагмент кода, выполняемый лямбда-функцией, которая может возвращать или не возвращать какое-либо значение.
- Лямбда-функции могут использоваться для возврата функциональных объектов.
- Синтаксически лямбда-функции ограничены только одним выражением.
В этой статье мы подробно обсудим лямбда-функции Python, а также покажем примеры их использования.
Создание лямбда – функции
Мы используем следующий синтаксис для объявления лямбда – функции:
lambda argument(s): expression
Как было сказано выше, мы можем иметь любое количество аргументов, но только одно выражение. Лямбда-оператор не может иметь никаких операторов и возвращает объект функции, который мы можем присвоить любой переменной.
Например:
remainder = lambda num: num % 2 print(remainder(5))
Выход
1
В этом коде lambda num: num % 2
является лямбда-функцией. num
является аргументом, в то время как num % 2
является выражением, которое вычисляется и возвращается результат выражения. Выражение получает модуль входного параметра на 2. Предоставляя 5 в качестве параметра, который делится на 2, мы получаем остаток от 1.
Вы должны заметить, что лямбда-функции в приведенном выше скрипте не было присвоено никакого имени. Он просто возвращает объект функции, который присваивается идентификатору remains
. Однако, несмотря на анонимность, мы могли вызвать его так же, как мы называем нормальную функцию. Заявление:
lambda num: num % 2
Это похоже на следующее:
def remainder(num): return num % 2
Вот еще один пример лямбда-функции:
product = lambda x, y : x * y print(product(2, 3))
Выход
6
Лямбда-функция, определенная выше, возвращает произведение значений двух аргументов.
Зачем Использовать Лямбда-Функции?
Лямбда – функции используются, когда вам нужна функция на короткий промежуток времени. Это обычно используется, когда вы хотите передать функцию в качестве аргумента функциям более высокого порядка, то есть функциям, которые принимают другие функции в качестве своих аргументов.
Использование анонимной функции внутри другой функции объясняется в следующем примере:
def testfunc(num): return lambda x : x * num
В приведенном выше примере у нас есть функция, которая принимает один аргумент, и этот аргумент должен быть умножен на неизвестное число. Давайте продемонстрируем, как использовать вышеприведенную функцию:
def testfunc(num): return lambda x : x * num result1 = testfunc(10) print(result1(9))
Выход
90
В приведенном выше сценарии мы используем лямбда-функцию для умножения числа, которое мы передаем, на 10. Эту же функцию можно использовать для умножения числа на 1000:
def testfunc(num): return lambda x : x * num result2 = testfunc(1000) print(result2(9))
Выход
9000
Мы можем использовать функцию testfunc()
для определения вышеуказанных двух лямбда-функций в рамках одной программы:
def testfunc(num): return lambda x : x * num result1 = testfunc(10) result2 = testfunc(1000) print(result1(9)) print(result2(9))
Выход
90 9000
Лямбда-функции могут использоваться вместе со встроенными функциями Python, такими как map()
, filter()
и т. Д.
В следующем разделе мы обсудим, как использовать лямбда-функции с различными встроенными функциями Python.
Функция filter()
Функция Python filter()
принимает в качестве аргументов лямбда-функцию вместе со списком. Он имеет следующий синтаксис:
filter(object, iterable)
Объект | здесь должен быть лямбда-функцией, которая возвращает логическое значение.
object будет вызываться для каждого элемента в iterable для выполнения оценки. В результате получается либо
True или a
False для каждого элемента. Обратите внимание, что функция может принимать в качестве входных данных только одну итерацию.
Лямбда-функция вместе со списком, подлежащим вычислению, передается функции filter ()
. Функция filter()
возвращает список тех элементов, которые возвращают True
при вычислении лямбда-функцией. Рассмотрим пример, приведенный ниже:
numbers_list = [2, 6, 8, 10, 11, 4, 12, 7, 13, 17, 0, 3, 21] filtered_list = list(filter(lambda num: (num > 7), numbers_list)) print(filtered_list)
Выход
[8, 10, 11, 12, 13, 17, 21]
В приведенном выше примере мы создали список с именем numbers_list
со списком целых чисел. Мы создали лямбда-функцию для проверки целых чисел, которые больше 7. Эта лямбда-функция была передана функции filter()
в качестве аргумента, и результаты этой фильтрации были сохранены в новом списке с именем filtered_list
.
Функция map()
Функция map ()
-это еще одна встроенная функция, которая принимает объект функции и список. Синтаксис функции map выглядит следующим образом:
map(object, iterable_1, iterable_2, ...)
Итерируемая функция map()
может быть словарем, списком и т. Д. Функция map()
в основном сопоставляет каждый элемент входной итерации с соответствующим элементом выходной итерации в соответствии с логикой, определенной лямбда-функцией. Рассмотрим следующий пример:
numbers_list = [2, 6, 8, 10, 11, 4, 12, 7, 13, 17, 0, 3, 21] mapped_list = list(map(lambda num: num % 2, numbers_list)) print(mapped_list)
Выход
[0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1]
В приведенном выше скрипте у нас есть список numbers_list
, который состоит из случайных чисел. Затем мы вызываем функцию map()
и передаем ей в качестве аргумента лямбда-функцию. Лямбда-функция вычисляет остаток после деления каждого числа на 2. Результат сопоставления хранится в списке с именем mapped_list
. Наконец, мы распечатываем содержимое списка.
Вывод
В Python лямбда-функция-это однострочная функция, объявленная без имени, которая может иметь любое количество аргументов, но может иметь только одно выражение. Такая функция способна вести себя аналогично обычной функции, объявленной с помощью ключевого слова Python def
. Часто лямбда – функция передается в качестве аргумента другой функции.
В этой статье мы объяснили синтаксис, примеры использования и примеры часто используемых лямбда-функций.