logo

Python Lambda-funksjoner

Python Lambda-funksjoner er anonyme funksjoner betyr at funksjonen er uten navn. Som vi allerede vet def nøkkelord brukes til å definere en normal funksjon i Python. På samme måte lambda nøkkelord brukes til å definere en anonym funksjon i Python .

Python Lambda funksjonssyntaks

Syntaks: lambda-argumenter: uttrykk



  • Denne funksjonen kan ha et hvilket som helst antall argumenter, men bare ett uttrykk, som evalueres og returneres.
  • Man står fritt til å bruke lambda-funksjoner der det er behov for funksjonsobjekter.
  • Du må holde deg kjent med at lambda-funksjoner er syntaktisk begrenset til et enkelt uttrykk.
  • Den har ulike bruksområder innen spesielle programmeringsfelt, i tillegg til andre typer uttrykk i funksjoner.

Python Lambda-funksjonseksempel

I eksemplet definerte vi en lambda-funksjon( øverste ) for å konvertere en streng til store bokstaver ved å bruke øverste() .

Denne koden definerer en lambda-funksjon kalt upper> som tar en streng som argument og konverterer den til store bokstaver ved hjelp av upper()> metode. Den bruker deretter denne lambda-funksjonen på strengen 'techcodeview.com' og skriver ut resultatet

Python3








str1>=> 'techcodeview.com'> upper>=> lambda> string: string.upper()> print>(upper(str1))>

>

>

Produksjon:

GEEKSFORGEEKS>

Bruk av Lambda-funksjonen i Python

La oss se noen av de praktiske bruken av Python lambda-funksjonen.

Tilstandskontroll ved bruk av Python lambda-funksjon

Her, den «format_numrisk» kaller lambda-funksjonen, og num sendes som en parameter for å utføre operasjoner.

Python3




format_numeric>=> lambda> num: f>'{num:e}'> if> isinstance>(num,>int>)>else> f>'{num:,.2f}'> print>(>'Int formatting:'>, format_numeric(>1000000>))> print>(>'float formatting:'>, format_numeric(>999999.789541235>))>

>

>

Produksjon:

Int formatting: 1.000000e+06 float formatting: 999,999.79>

Forskjellen mellom Lambda-funksjoner og def-definerte funksjoner

Koden definerer en kubefunksjon ved å bruke både ' def'> nøkkelord og en lambda-funksjon. Den beregner kuben til et gitt tall (5 i dette tilfellet) ved å bruke begge tilnærmingene og skriver ut resultatene. Utgangen er 125 for begge ' def'> og lambda-funksjoner, som viser at de oppnår samme kubeberegning.

Python3




def> cube(y):> >return> y>*>y>*>y> lambda_cube>=> lambda> y: y>*>y>*>y> print>(>'Using function defined with `def` keyword, cube:'>, cube(>5>))> print>(>'Using lambda function, cube:'>, lambda_cube(>5>))>

>

>

Produksjon:

Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>

Som vi kan se i eksemplet ovenfor, både kube() funksjon og lambda_cube() funksjonen oppfører seg på samme måte og som tiltenkt. La oss analysere eksemplet ovenfor litt mer:

Med lambdafunksjon

Uten lambdafunksjon

Støtter enkeltlinje noen ganger utsagn som returnerer en viss verdi. Støtter et hvilket som helst antall linjer inne i en funksjonsblokk
Bra for å utføre korte operasjoner/datamanipulasjoner. Bra for alle tilfeller som krever flere linjer med kode.
Å bruke lambda-funksjonen kan noen ganger redusere lesbarheten til koden. Vi kan bruke kommentarer og funksjonsbeskrivelser for enkel lesbarhet.

Praktisk bruk av Python lambda-funksjonen

Python Lambda-funksjon med listeforståelse

På hver iterasjon inne i listeforståelse , lager vi en ny lambda-funksjon med standardargumentet x (der x er det gjeldende elementet i iterasjonen). Senere, inne i for-løkken, kaller vi det samme funksjonsobjektet som har standardargumentet som bruker punkt() og få ønsket verdi. Dermed, er_jevn_liste lagrer listen over lambdafunksjonsobjekter.

Python3




is_even_list>=> [>lambda> arg>=>x: arg>*> 10> for> x>in> range>(>1>,>5>)]> for> item>in> is_even_list:> >print>(item())>

>

>

Produksjon:

10 20 30 40>

Python Lambda-funksjon med if-else

Her bruker vi Maks lambda-funksjon for å finne maksimum av to heltall.

Python3




Max> => lambda> a, b : a>if>(a>b)>else> b> print>(>Max>(>1>,>2>))>

>

>

Produksjon:

2>

Python Lambda med flere utsagn

Lambdafunksjoner tillater ikke flere utsagn, men vi kan lage to lambdafunksjoner og deretter kalle den andre lambdafunksjonen som en parameter til den første funksjonen. La oss prøve å finne det andre maksimale elementet ved å bruke lambda.

Koden definerer en liste over underlister som kalles ' List'> . Den bruker lambda-funksjoner for å sortere hver underliste og finne det nest største elementet i hver underliste. Resultatet er en liste over nest største elementer, som deretter skrives ut. Utdataene viser det nest største elementet fra hver underliste i den opprinnelige listen.

Python3




List> => [[>2>,>3>,>4>],[>1>,>4>,>16>,>64>],[>3>,>6>,>9>,>12>]]> sortList>=> lambda> x: (>sorted>(i)>for> i>in> x)> secondLargest>=> lambda> x, f : [y[>len>(y)>->2>]>for> y>in> f(x)]> res>=> secondLargest(>List>, sortList)> print>(res)>

>

>

Produksjon:

[3, 16, 9]>

Lambdafunksjoner kan brukes sammen med innebygde funksjoner som filter() , kart() og redusere() .

Bruke lambda()-funksjon med filter()

Filter()-funksjonen i Python tar inn en funksjon og en liste som argumenter. Dette tilbyr en elegant måte å filtrere ut alle elementene i en sekvenssekvens, som funksjonen returnerer True for. Her er et lite program som returnerer oddetall fra en inndataliste:

Filtrer ut alle oddetall ved å bruke filter() og lambda-funksjonen

Her returnerer lambda x: (x % 2 != 0) True eller Usant hvis x ikke er jevnt. Siden filter() bare holder elementer der den produserer ekte , dermed fjerner den alle oddetall som ble generert Falsk .

Python3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>filter>(>lambda> x: (x>%> 2> !>=> 0>), li))> print>(final_list)>

>

>

Produksjon:

[5, 7, 97, 77, 23, 73, 61]>

Filtrer alle personer som er over 18 år, ved å bruke lambda- og filter()-funksjonen

Koden filtrerer en liste over aldre og trekker ut alderen til voksne (aldre over 18 år) ved hjelp av en lambda-funksjon og ' filter'> funksjon. Den skriver deretter ut listen over voksne aldre. Utdataene viser alderen til personer som er 18 år eller eldre.

Python3




ages>=> [>13>,>90>,>17>,>59>,>21>,>60>,>5>]> adults>=> list>(>filter>(>lambda> age: age>>18>, ages))> print>(adults)>

matematikk pow java
>

>

Produksjon:

[90, 59, 21, 60]>

Bruke lambda()-funksjon med map()

Map()-funksjonen i Python tar inn en funksjon og en liste som et argument. Funksjonen kalles med en lambda-funksjon og en liste, og en ny liste returneres som inneholder alle de lambda-modifiserte elementene som returneres av den funksjonen for hvert element. Eksempel:

Multipliser alle elementene i en liste med 2 ved å bruke lambda- og map()-funksjonen

Koden dobler hvert element i en liste ved å bruke en lambda-funksjon og ' map'> funksjon. Den skriver deretter ut den nye listen med de doblete elementene. Utdataene viser hvert element fra den opprinnelige listen, multiplisert med 2.

Python3




li>=> [>5>,>7>,>22>,>97>,>54>,>62>,>77>,>23>,>73>,>61>]> final_list>=> list>(>map>(>lambda> x: x>*>2>, li))> print>(final_list)>

>

>

Produksjon:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>

Transformer alle elementer i en liste til store bokstaver ved å bruke lambda og map()-funksjonen

Koden konverterer en liste over dyrenavn til store bokstaver ved hjelp av en lambda-funksjon og ' map'> funksjon. Den skriver deretter ut listen med dyrenavnene med store bokstaver. Utdataene viser dyrenavnene med store bokstaver.

Python3




animals>=> [>'dog'>,>'cat'>,>'parrot'>,>'rabbit'>]> uppered_animals>=> list>(>map>(>lambda> animal: animal.upper(), animals))> print>(uppered_animals)>

>

>

Produksjon:

['DOG', 'CAT', 'PARROT', 'RABBIT']>

Bruke lambda()-funksjonen med redusere()

De redusere() funksjon i Python tar inn en funksjon og en liste som et argument. Funksjonen kalles med en lambda-funksjon og et iterbart og et nytt redusert resultat returneres. Dette utfører en repeterende operasjon over parene av iterable. Reduser()-funksjonen tilhører funksjonsverktøy modul.

En sum av alle elementene i en liste ved hjelp av lambda og redusere()-funksjonen

Koden beregner summen av elementer i en liste ved å bruke ' reduce'> funksjon fra ' functools'> modul. Den importerer ' reduce'> , definerer en liste, bruker en lambda-funksjon som legger til to elementer om gangen, og skriver ut summen av alle elementene i listen. Utgangen viser den beregnede summen.

Python3




from> functools>import> reduce> li>=> [>5>,>8>,>10>,>20>,>50>,>100>]> sum> => reduce>((>lambda> x, y: x>+> y), li)> print>(>sum>)>

>

>

Produksjon:

193>

Her blir resultatene av de to foregående elementene lagt til det neste elementet, og dette fortsetter til slutten av listen som (((((5+8)+10)+20)+50)+100).

Finn det maksimale elementet i en liste ved å bruke lambda og redusere()-funksjonen

Koden bruker ' functools'> modul for å finne det maksimale elementet i en liste ( ' lis'> ) ved å bruke ' reduce'> funksjon og en lambda funksjon. Den skriver deretter ut det maksimale elementet, som er 6 i dette tilfellet.

Python3




import> functools> lis>=> [>1>,>3>,>5>,>6>,>2>, ]> print>(>'The maximum element of the list is : '>, end>=>'')> print>(functools.>reduce>(>lambda> a, b: a>if> a>b>else> b, lis))>

>

>

Produksjon:

The maximum element of the list is : 6>