Рубрики
Без рубрики

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

Автор оригинала: 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 . Часто лямбда – функция передается в качестве аргумента другой функции.

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