Лямбда-функции в Python

Что такое лямбда-функции? В Python мы используем ключевое слово lambda для объявления анонимной функции, поэтому мы называем их «лямбда-функциями». Анонимная функция относится к функции, объявленной без имени. Хотя синтаксически они выглядят по-разному, лямбда-функции ведут себя так же, как обычные функции, объявленные с использованием ключевого слова def. Ниже приведены характеристики лямбда-функций Python: * Лямбда-функция может принимать любое количество аргументов, но они продолжают

Что такое лямбда-функции?

В 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.

Вы должны заметить, что лямбда-функции в приведенном выше сценарии не было присвоено никакого имени. Он просто возвращает объект функции, который назначается remainder идентификатора. Однако, несмотря на анонимность, мы могли вызывать ее так же, как вызываем обычную функцию. Заявление:

 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 здесь должна быть лямбда-функция, возвращающая логическое значение. object будет вызываться для каждого элемента в итерации для выполнения оценки. Результат - True или 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(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 лямбда-функция - это однострочная функция, объявленная без имени, которая может иметь любое количество аргументов, но может иметь только одно выражение. Такая функция способна вести себя аналогично обычной функции, объявленной с использованием ключевого слова def Часто лямбда-функция передается в качестве аргумента другой функции.

В этой статье мы объяснили синтаксис, варианты использования и примеры часто используемых лямбда-функций.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus