Python Lambda


Какво представляват функциите на Python Lambda?

Функциите на Python Lambda са функции които нямат никакво име. Следователно те са известни също като анонимни или безименни функции. Думата „ламбда“ е ключова дума. Функцията, която следва ключовата дума 'lambda', е анонимна.

Функции срещу ламбда функции:

  • За да дефинираме нормални функции във функцията в Python, използваме ключовата дума 'def'. Използваме ключова дума „lambda“, за да дефинираме анонимни функции.
  • Ламбда функцията може да има произволен брой аргументи, но те могат да върнат само една стойност под формата на израз. Ламбда функциите на Python са синтактично ограничени до един израз.

Защо да използвам Python Lambda Functions?

  • Ламбда функциите се появяват в картината, когато се нуждаем от функция само веднъж.
  • Функциите на Python Lambda често се използват с вградени функции като филтър (), карта (), намаляване () и т.н.,
  • Използването на Lambda функции намалява броя на редовете код в сравнение с нормалните функции.

Синтаксис:

lambda arguments:expression

Както вече споменахме, ламбда функция може да приема произволен брой аргументи, но само един израз. Следователно броят на аргументите варира от 0 до произволно число.

Примери:

С един аргумент:

Ето пример за отпечатване на квадратния корен на число.

a=lambda x:x**(1/2)
print(a(225))
15.0

x - е аргументът.

x ** (1/2) - изразът, който се оценява.

ламбда x: x ** (1/2) - анонимна функция, която връща функционален обект.

>>> print(lambda x: x**(1/2))
<function <lambda> at 0x048388A0>

С множество аргументи:

По-долу е даден пример за ламбда функция на python, която приема множество параметри.

a=lambda a,b,c:a+b+c
print(a(3,10,12))
25

Когато пишем същия пример, използвайки нормални функции, които ще заемат повече редове. Например,

def func(a,b,c):
    return a+b+c

print(func(3,10,12))

Може да получите този въпрос, когато казваме ламбда като безименни функции, защо тогава трябва да присвоим ламбда функция на някаква променлива и да извикаме ламбда функцията с помощта на променлива. Като цяло използваме ламбда функции с функции от по-висок ред и вградени функции като филтър, карта, намаляване и т.н.,

Ламбда функции с нормални функции:

def func(x):
    return lambda :x*x

a=func(4)
b=func(5)
print(a())
print(b())
16
25

В горния пример функцията func () връща ламбда функция. Винаги, когато извикаме func (), използваме функцията ламбда.

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

Функцията за филтриране филтрира итерацията с помощта на друга функция. Функцията за филтриране приема функцията за филтриране на итерируемото и итерируемото като аргумент.

Синтаксис:

filter(function, iterable)

Пример:

Нека да видим пример за филтриране на четните числа от списъка.

l=[7,4,9,2,3,8,5,12,10]
new_l=list(filter(lambda a:a%2==0,l))
print(new_l)
[4, 2, 8, 12, 10]

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

Функцията map прилага функция към всички стойности в итерабел. Функцията map приема функцията, която да бъде приложена към итерируемия и итерируем като аргумент.

Синтаксис:

map(function, iterable)

Пример:

Вземете четните числа от списък, като използвате функцията за карта.

l=[12,14,3,9,15,25]
new_list = list(map(lambda x: (x%2 == 0), l))
print(new_list)
[True, True, False, False, False, False]

ламбда функция с намаляване:

Функцията за намаляване прилага функция към всички стойности на итерабел и връща едно число. Функцията за намаляване приема функцията и итерация като аргумент.

Синтаксис:

reduce(function, iterable)

Пример:

Вземете произведението на всички числа в списък.

from functools import reduce

l=[12,14,3,9,15,25]
product=reduce((lambda x,y:x*y), l)
print(product)
1701000