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