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>