logo

Python Lambda funktioner

Python Lambda funktioner er anonyme funktioner betyder, at funktionen er uden navn. Som vi allerede kender def nøgleord bruges til at definere en normal funktion i Python. Tilsvarende lambda nøgleord bruges til at definere en anonym funktion i Python .

Python Lambda Funktion Syntaks

Syntaks: lambda-argumenter: udtryk



  • Denne funktion kan have et hvilket som helst antal argumenter, men kun ét udtryk, som evalueres og returneres.
  • Man er fri til at bruge lambda-funktioner, hvor funktionsobjekter er påkrævet.
  • Du skal holde dig ved, at lambda-funktioner syntaktisk er begrænset til et enkelt udtryk.
  • Det har forskellige anvendelser inden for særlige programmeringsområder, foruden andre typer udtryk i funktioner.

Eksempel på Python Lambda-funktion

I eksemplet definerede vi en lambda funktion( øverst ) for at konvertere en streng til dens store bogstaver ved hjælp af øverst() .

Denne kode definerer en lambda-funktion ved navn upper> der tager en streng som sit argument og konverterer den til store bogstaver ved hjælp af upper()> metode. Den anvender derefter denne lambda-funktion på strengen 'techcodeview.com' og udskriver resultatet

Python3








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

>

>

Produktion:

GEEKSFORGEEKS>

Brug af Lambda-funktionen i Python

Lad os se nogle af de praktiske anvendelser af Python lambda-funktionen.

Tilstandskontrol ved hjælp af Python lambda-funktion

Her, den 'format_numrisk' kalder lambda-funktionen, og num sendes som en parameter til at udføre operationer.

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>))>

>

>

Produktion:

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

Forskellen mellem Lambda-funktioner og def-defineret funktion

Koden definerer en kubefunktion ved hjælp af både ' def'> nøgleord og en lambda-funktion. Den beregner terningen af ​​et givet tal (5 i dette tilfælde) ved hjælp af begge metoder og udskriver resultaterne. Udgangen er 125 for begge ' def'> og lambda-funktioner, der viser, at de opnår den samme terningberegning.

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>))>

>

>

Produktion:

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

Som vi kan se i ovenstående eksempel, er både terning() funktion og lambda_terning() funktion opfører sig ens og efter hensigten. Lad os analysere ovenstående eksempel lidt mere:

Med lambda funktion

Uden lambdafunktion

Understøtter sommetider enkeltlinjeudsagn, der returnerer en vis værdi. Understøtter et vilkårligt antal linjer inde i en funktionsblok
God til at udføre korte operationer/datamanipulationer. God til alle sager, der kræver flere linjer kode.
Brug af lambda-funktionen kan nogle gange reducere kodens læsbarhed. Vi kan bruge kommentarer og funktionsbeskrivelser for nem læsbarhed.

Praktisk brug af Python lambda-funktion

Python Lambda-funktion med listeforståelse

På hver iteration inde i listeforståelse , opretter vi en ny lambda-funktion med standardargumentet x (hvor x er det aktuelle element i iterationen). Senere, inde i for-løkken, kalder vi det samme funktionsobjekt med standardargumentet ved hjælp af vare() og få den ønskede værdi. Dermed, er_lige_liste gemmer listen over lambdafunktionsobjekter.

Python3




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

>

>

Produktion:

10 20 30 40>

Python Lambda Funktion med if-else

Her bruger vi Maks lambda-funktion til at finde maksimum af to heltal.

Python3




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

>

>

Produktion:

2>

Python Lambda med flere udsagn

Lambda-funktioner tillader ikke flere udsagn, men vi kan oprette to lambda-funktioner og derefter kalde den anden lambda-funktion som en parameter til den første funktion. Lad os prøve at finde det andet maksimale element ved hjælp af lambda.

Koden definerer en liste over underlister kaldet ' List'> . Den bruger lambda-funktioner til at sortere hver underliste og finde det næststørste element i hver underliste. Resultatet er en liste over de næststørste elementer, som derefter udskrives. Outputtet viser det næststørste element fra hver underliste i den originale liste.

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)>

>

>

Produktion:

[3, 16, 9]>

Lambdafunktioner kan bruges sammen med indbyggede funktioner som f.eks filter() , kort() og reducere() .

Brug af lambda() Funktion med filter()

Filter()-funktionen i Python tager en funktion og en liste ind som argumenter. Dette tilbyder en elegant måde at bortfiltrere alle elementer i en sekvenssekvens, for hvilken funktionen returnerer True. Her er et lille program, der returnerer de ulige tal fra en inputliste:

Filtrer alle ulige tal fra ved hjælp af filter() og lambda-funktionen

Her returnerer lambda x: (x % 2 != 0) Sand eller Falsk, hvis x ikke er lige. Da filter() kun holder elementer, hvor det producerer Rigtigt , så det fjerner alle ulige tal, der genereres 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)>

>

>

Produktion:

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

Filtrer alle personer, der er over 18 år, ved hjælp af lambda- og filter()-funktionen

Koden filtrerer en liste over aldre og udtrækker alderen på voksne (aldre over 18 år) ved hjælp af en lambda-funktion og ' filter'> fungere. Det udskriver derefter listen over voksne aldre. Outputtet viser alderen på personer, der er 18 år eller ældre.

Python3




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

latex matrix
>

>

Produktion:

[90, 59, 21, 60]>

Brug af lambda()-funktion med map()

Map()-funktionen i Python tager en funktion og en liste ind som et argument. Funktionen kaldes med en lambda-funktion og en liste, og der returneres en ny liste, som indeholder alle de lambda-modificerede elementer, der returneres af den pågældende funktion for hvert element. Eksempel:

Multiplicer alle elementer i en liste med 2 ved hjælp af lambda og map() funktion

Koden fordobler hvert element i en liste ved hjælp af en lambda-funktion og ' map'> fungere. Den udskriver derefter den nye liste med de fordoblede elementer. Outputtet viser hvert element fra den originale liste ganget 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)>

>

>

Produktion:

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

Transform alle elementer i en liste til store bogstaver ved hjælp af lambda og map() funktion

Koden konverterer en liste over dyrenavne til store bogstaver ved hjælp af en lambda-funktion og ' map'> fungere. Den udskriver derefter listen med dyrenavnene med store bogstaver. Outputtet viser dyrenavnene med store bogstaver.

Python3




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

>

>

Produktion:

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

Brug af lambda() Funktion med reduce()

Det reducere() funktion i Python tager en funktion og en liste ind som et argument. Funktionen kaldes med en lambda-funktion og en iterabel og et nyt reduceret resultat returneres. Dette udfører en gentagen operation over parrene af iterable. Funktionen reduce() hører til funktionsværktøjer modul.

En sum af alle elementer i en liste ved hjælp af lambda og reduce() funktion

Koden beregner summen af ​​elementer i en liste ved hjælp af ' reduce'> funktion fra ' functools'> modul. Den importerer ' reduce'> , definerer en liste, anvender en lambda-funktion, der tilføjer to elementer ad gangen, og udskriver summen af ​​alle elementer på listen. Outputtet viser den beregnede sum.

Python3




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

>

>

Produktion:

193>

Her føjes resultaterne af de to foregående elementer til det næste element, og dette fortsætter til slutningen af ​​listen som (((((5+8)+10)+20)+50)+100).

Find det maksimale element i en liste ved hjælp af lambda og reduce()-funktionen

Koden bruger ' functools'> modul for at finde det maksimale element i en liste ( ' lis'> ) ved at anvende ' reduce'> funktion og en lambda funktion. Det udskriver derefter det maksimale element, som er 6 i dette tilfælde.

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))>

>

>

Produktion:

The maximum element of the list is : 6>