Vad är Lambda-funktioner och hur man använder dem?

Lär dig Python lambda-funktioner tillsammans med skillnaden mellan normala funktioner och lambda-funktioner och hur de kan användas i filter (), karta (), reducera ().

Ett namn är en konvention som används för att hänvisa till eller adressera någon enhet. Nästan allt runt omkring oss har ett namn. Programmeringsvärlden följer också detta. Men är det ett måste att nämna allt? Eller kan du ha något som bara är 'anonymt'? Svaret är ja. ' tillhandahåller Lambda-funktioner, även kända som Anonyma funktioner som faktiskt är namnlösa. Så låt oss gå vidare för att lära oss om dessa 'Anonyma mysterier' av Python, i följande sekvens.

Så låt oss börja :)





Varför använda Python Lambda-funktioner?


Huvudsyftet med anonyma funktioner kommer till bilden när du behöver någon funktion bara en gång. De kan skapas varhelst de behövs. Av denna anledning är Python Lambda-funktioner också kända som kastfunktioner som används tillsammans med andra fördefinierade funktioner som filter (), karta () etc. Dessa funktioner hjälper till att minska antalet rader i din kod jämfört med vanligt .

För att bevisa detta, låt oss gå vidare och lära oss om Python Lambda-funktioner.



Vad är Python Lambda-funktioner?


Python Lambda-funktioner är funktioner som inte har något namn. De är också kända som anonyma eller namnlösa funktioner. Ordet ”lambda” är inte ett namn utan ett nyckelord. Det här nyckelordet anger att funktionen som följer är anonym.

Nu när du är medveten om vad dessa anonyma funktioner hänvisar till, låt oss gå vidare för att se hur du skriver dessa Python Lambda-funktioner.

Hur skriver jag Lambda-funktioner i Python?

En Lambda-funktion skapas med lambda-operatören och dess syntax är som följer:



SYNTAX:

lambda argument: uttryck

Pytonorm lambda-funktion kan ha valfritt antal argument men det tar bara ett uttryck. Ingångarna eller argumenten kan börja vid 0 och gå upp till valfri gräns. Precis som alla andra funktioner är det helt bra att ha lambdafunktioner utan ingångar. Därför kan du ha lambdafunktioner i något av följande format:

EXEMPEL:

lambda: “Ange syftet”

Här tar lambdafunktionen inga argument.

EXEMPEL:

lambda aett: “Ange användningen av enett'

Här tar lambda en ingång som är aett.

c ++ java python

På samma sätt kan du få lambda aett, till2, till3..tilln.

Låt oss ta några exempel för att demonstrera detta:

EXEMPEL 1:

a = lambda x: x * x tryck (a (3))

PRODUKTION: 9

EXEMPEL 2:

a = lambda x, y: x * y-tryck (a (3,7))

PRODUKTION: tjugoett

Som ni kan se har jag tagit två exempel här. I det första exemplet används lambdafunktionen med bara ett uttryck medan det andra exemplet har två argument överförda till det. Observera att båda funktionerna har ett enda uttryck följt av argumenten. Därför kan lambdafunktioner inte användas där du behöver flerlinjeuttryck.

Å andra sidan kan normala pythonfunktioner ta valfritt antal uttalanden i deras funktionsdefinitioner.

Hur minskar anonyma funktioner kodens storlek?

Innan vi jämför mängden kod som krävs, låt oss först skriva ner syntaxen för och jämför den med lambdafunktionerna som beskrivits tidigare.

Alla normala funktioner i Python definieras med hjälp av a def nyckelord enligt följande:

SYNTAX:

def funktionsnamn (parametrar):
uttalande

Som du kan se är mängden kod som krävs för en lambdafunktion ganska mindre än för normala funktioner.

Låt oss skriva om exemplet vi tog tidigare med normala funktioner nu.

EXEMPEL:

kan du utöka och implementera i java
def my_func (x): returnera x * x print (my_func (3))

PRODUKTION: 9

Som du kan se, i exemplet ovan, behöver vi ett returuttal inom my_func för att utvärdera värdet på kvadraten 3. Tvärtom använder lambda-funktionen inte detta returuttalande, utan kroppen av den anonyma funktionen skrivs på samma rad som själva funktionen efter kolon-symbolen. Därför är funktionens storlek mindre än min_func.

Dock kallas lambdafunktioner i ovanstående exempel med hjälp av andra a. Detta görs eftersom dessa funktioner är namnlösa och därför kräver att något namn kallas. Men detta faktum kan verka förvirrande om varför använda sådana namnlösa funktioner när du faktiskt behöver tilldela något annat namn för att kalla dem? Och naturligtvis, efter att ha tilldelat namnet a till min funktion, förblir det inte namnlöst längre! Rätt?

Det är en legitim fråga, men poängen är att detta inte är rätt sätt att använda dessa anonyma funktioner.

Anonyma funktioner används bäst inom andra funktioner av högre ordning som antingen använder någon funktion som ett argument eller returnerar en funktion som utdata. För att demonstrera detta, låt oss nu gå vidare till vårt nästa ämne.

Python Lambda-funktioner inom användardefinierade funktioner:

Som nämnts ovan används lambdafunktioner inom andra funktioner för att markera den bästa fördelen.

Följande exempel består av new_func som är en normal pythonfunktion som tar ett argument x. Detta argument läggs sedan till i något okänt argument y som levereras genom lambda-funktionen.

EXEMPEL:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

PRODUKTION:

6
5
Som du kan se, i ovanstående exempel kallas lambdafunktionen som finns i new_func när vi använder new_func (). Varje gång kan vi skicka separata värden till argumenten.

Nu när du har sett hur man använder anonyma funktioner i funktioner av högre ordning, låt oss nu gå vidare för att förstå en av dess mest populära användning som finns inom filter (), map () och reducera () metoder.

Hur man använder Anonyma funktioner inom filter (), karta () och reducera ():

Anonyma funktioner inom filtrera():

filtrera():

Metoden filter () används för att filtrera givna iterables (listor, uppsättningar, etc) med hjälp av en annan funktion, skickad som ett argument, för att testa att alla element är sanna eller falska.

Syntaxen för denna funktion är:

SYNTAX:

filter (funktion, iterabel)

Tänk nu på följande exempel:

EXEMPEL:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

PRODUKTION: [6]

Här är min_lista en lista över iterabla värden som skickas till filterfunktionen. Denna funktion använder lambdafunktionen för att kontrollera om det finns några värden i listan, som motsvarar 2 när de divideras med 3. Utgången består av en lista som uppfyller det uttryck som finns inom den anonyma funktionen.

Karta():

Map () -funktionen i Python är en funktion som tillämpar en given funktion på alla iterables och returnerar en ny lista.

__i det__

SYNTAX:

karta (funktion, iterabel)

Låt oss ta ett exempel för att demonstrera användningen av lambdafunktionerna i map () -funktionen:

EXEMPEL:

my_list = [2,3,4,5,6,7,8] new_list = list (karta (lambda a: (a / 3! = 2), li)) print (new_list)

PRODUKTION:

[True, True, True, True, False, True, True]

Ovanstående utdata visar att, när värdet på iterablesna inte är lika med 2 när det delas med 3, ska resultatet som returneras vara True. Därför returnerar det sant för alla element i min_lista förutom värdet 6 när villkoret ändras till Falskt.

minska():

Funktionen reducera () används för att tillämpa någon annan funktion på en lista med element som skickas som en parameter till den och slutligen returnerar ett enda värde.

Syntaxen för denna funktion är som följer:

SYNTAX:

minska (funktion, sekvens)

EXEMPEL:

från funktools import reducera reducera (lambda a, b: a + b, [23,21,45,98])

Ovanstående exempel visas i följande bild:

reducera-python lambda-edureka

PRODUKTION: 187

Utdata visar tydligt att alla element i listan är läggs till kontinuerligt för att returnera det slutliga resultatet.

Med detta kommer vi till slutet av den här artikeln om 'Python Lambda'. Hoppas att du är tydlig med allt som har delats med dig. Se till att du tränar så mycket som möjligt och återgår till din upplevelse.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på denna “Python Lambda” -blogg så återkommer vi till dig så snart som möjligt.

För att få fördjupad kunskap om Python tillsammans med dess olika applikationer kan du registrera dig för live med 24/7 support och livstidsåtkomst.