Hvad er Lambda-funktioner og hvordan man bruger dem?



Lær Python lambda-funktioner sammen med forskellen mellem normale funktioner og lambda-funktioner, og hvordan de kan bruges i filter (), map (), reducer ().

Et navn er en konvention, der bruges til at henvise til eller adressere enhver enhed. Næsten alt omkring os har et navn. Programmeringsverdenen går også i overensstemmelse med dette. Men er det et must at navngive alt? Eller kan du have noget, der bare er 'anonymt'? Svaret er ja. ' giver Lambda-funktioner, også kendt som anonyme funktioner, der faktisk er navnløse. Så lad os gå videre for at lære om disse 'Anonyme mysterier' af Python i den følgende sekvens.

Så lad os begynde :)





Hvorfor bruge Python Lambda-funktioner?


Hovedformålet med anonyme funktioner kommer ind i billedet, når du kun har brug for en funktion. De kan oprettes, uanset hvor de er nødvendige. På grund af denne grund er Python Lambda-funktioner også kendt som smidfunktioner, der bruges sammen med andre foruddefinerede funktioner såsom filter (), kort () osv. Disse funktioner hjælper med at reducere antallet af linjer i din kode sammenlignet med normal .

For at bevise dette skal vi gå videre og lære om Python Lambda-funktioner.



Hvad er Python Lambda-funktioner?


Python Lambda-funktioner er funktioner, der ikke har noget navn. De er også kendt som anonyme eller navnløse funktioner. Ordet 'lambda' er ikke et navn, men det er et nøgleord. Dette nøgleord specificerer, at den følgende funktion er anonym.

Nu hvor du er opmærksom på, hvad disse anonyme funktioner henviser til, lad os gå videre for at se, hvordan du skriver disse Python Lambda-funktioner.

Hvordan man skriver Lambda-funktioner i Python?

En Lambda-funktion oprettes ved hjælp af lambda-operatoren, og dens syntaks er som følger:



SYNTAX:

lambda argumenter: udtryk

Python lambda-funktion kan have et vilkårligt antal argumenter, men det tager bare et udtryk. Indgange eller argumenter kan starte ved 0 og gå op til en hvilken som helst grænse. Ligesom alle andre funktioner er det helt fint at have lambda-funktioner uden input. Derfor kan du have lambdafunktioner i et af følgende formater:

EKSEMPEL:

lambda: “Angiv formålet”

Her tager lambda-funktionen ingen argumenter.

EKSEMPEL:

lambda aen: “Angiv brugen af ​​enen'

Her tager lambda et input, som er enen.

hvad gør .innerhtml

På samme måde kan du have lambda aen, til2, til3..tiln.

Lad os tage et par eksempler for at demonstrere dette:

EKSEMPEL 1:

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

PRODUKTION: 9

EKSEMPEL 2:

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

PRODUKTION: enogtyve

Som du kan se, har jeg taget to eksempler her. Det første eksempel gør brug af lambda-funktionen med kun et udtryk, mens det andet eksempel har to argumenter, der er overført til det. Bemærk, at begge funktioner har et enkelt udtryk efterfulgt af argumenterne. Derfor kan lambda-funktioner ikke bruges, hvor du har brug for udtryk med flere linjer.

På den anden side kan normale pythonfunktioner tage et hvilket som helst antal udsagn i deres funktionsdefinitioner.

Hvordan reducerer anonyme funktioner kodenes størrelse?

Før vi sammenligner den krævede kode, skal vi først nedskrive syntaksen for og sammenlign det med lambda-funktionerne beskrevet tidligere.

Enhver normal funktion i Python defineres ved hjælp af a def nøgleord som følger:

java forskel mellem kast og kast

SYNTAX:

def funktionsnavn (parametre):
erklæring (er)

Som du kan se, er mængden af ​​kode, der kræves for en lambda-funktion, meget mindre end for normale funktioner.

Lad os omskrive det eksempel, vi tog tidligere ved hjælp af normale funktioner nu.

EKSEMPEL:

def my_func (x): return x * x print (my_func (3))

PRODUKTION: 9

Som du kan se, i ovenstående eksempel, har vi brug for en returerklæring i my_func for at evaluere værdien af ​​kvadratet på 3. I modsætning hertil bruger lambda-funktionen ikke denne returretning, men kroppen af ​​den anonyme funktion er skrevet i samme linje som selve funktionen efter kolon-symbolet. Derfor er funktionens størrelse mindre end min_func.

Imidlertid kaldes lambdafunktioner i ovenstående eksempler ved hjælp af nogle andre en. Dette gøres, fordi disse funktioner er navnløse og derfor kræver, at der kaldes noget navn. Men denne kendsgerning kan virke forvirrende over hvorfor bruge sådanne navnløse funktioner, når du faktisk skal tildele et andet navn for at kalde dem? Og selvfølgelig, efter at have tildelt navnet a til min funktion, forbliver det ikke længere navnløst! Ret?

Det er et legitimt spørgsmål, men pointen er, at dette ikke er den rigtige måde at bruge disse anonyme funktioner på.

Anonyme funktioner bruges bedst inden for andre højere ordensfunktioner der enten gør brug af en eller anden funktion som et argument, eller returnerer en funktion som output. For at demonstrere dette, lad os nu gå videre mod vores næste emne.

Python Lambda-funktioner inden for brugerdefinerede funktioner:

Som nævnt ovenfor bruges lambdafunktioner inden for andre funktioner for at markere den fineste fordel.

Følgende eksempel består af new_func, som er en normal python-funktion, der tager et argument x. Dette argument tilføjes derefter til et ukendt argument y, der leveres gennem lambda-funktionen.

EKSEMPEL:

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 ovenstående eksempel kaldes lambda-funktionen, der er til stede inden for new_func, når vi bruger new_func (). Hver gang kan vi videregive separate værdier til argumenterne.

Nu hvor du har set, hvordan du bruger anonyme funktioner inden for højere ordensfunktioner, lad os nu gå videre og forstå en af ​​dens mest populære anvendelser, der er inden for metoderne filter (), map () og reducer ().

Sådan bruges anonyme funktioner inden for filter (), map () og reducere ():

Anonyme funktioner indenfor filter():

filter():

Metoden filter () bruges til at filtrere de givne iterables (lister, sæt osv.) Ved hjælp af en anden funktion, sendt som et argument, for at teste alle elementerne for at være sande eller falske.

Syntaksen for denne funktion er:

SYNTAX:

filter (funktion, iterabel)

Overvej nu følgende eksempel:

EKSEMPEL:

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]

Her er min_liste en liste over iterable værdier, der overføres til filterfunktionen. Denne funktion bruger lambda-funktionen til at kontrollere, om der er nogen værdier på listen, der svarer til 2, når de divideres med 3. Outputtet består af en liste, der tilfredsstiller det udtryk, der findes i den anonyme funktion.

kort():

Map () -funktionen i Python er en funktion, der anvender en given funktion på alle iterables og returnerer en ny liste.

SYNTAX:

kort (funktion, iterabel)

Lad os tage et eksempel for at demonstrere brugen af ​​lambdafunktionerne i map () -funktionen:

EKSEMPEL:

brug af scanner i java
min_liste = [2,3,4,5,6,7,8] ny_liste = liste (kort (lambda a: (a / 3! = 2), li)) print (ny_liste)

PRODUKTION:

[Sand, Sand, Sand, Sand, Falsk, Sand, Sand]

Ovenstående output viser, at hver gang værdien af ​​iterables ikke er lig med 2, divideret med 3, skal det returnerede resultat være sandt. Derfor returnerer det for alle elementer i min_liste med undtagelse af værdien 6, når betingelsen ændres til Falsk.

reducere():

Funktionen reducere () bruges til at anvende en anden funktion på en liste over elementer, der sendes som en parameter til den, og til sidst returnerer en enkelt værdi.

Syntaksen for denne funktion er som følger:

SYNTAX:

reducere (funktion, sekvens)

EKSEMPEL:

fra funktionools import reducer reducer (lambda a, b: a + b, [23,21,45,98])

Ovenstående eksempel er afbildet i følgende billede:

reducere-python lambda-edureka

PRODUKTION: 187

Outputtet viser tydeligt, at alle elementerne på listen er tilføjet kontinuerligt for at returnere det endelige resultat.

Med dette kommer vi til slutningen af ​​denne artikel om 'Python Lambda'. Håber du er klar med alt, hvad der er blevet delt med dig. Sørg for at øve så meget som muligt, og vend din oplevelse tilbage.

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne 'Python Lambda' -blog, og vi vender tilbage til dig hurtigst muligt.

For at få dybtgående viden om Python sammen med dens forskellige applikationer kan du tilmelde dig live med 24/7 support og livstidsadgang.