Python Lambda funktioner är anonyma funktioner betyder att funktionen är utan namn. Som vi redan vet def nyckelord används för att definiera en normal funktion i Python. På liknande sätt lambda nyckelord används för att definiera en anonym funktion i Pytonorm .
Python Lambda Funktionssyntax
Syntax: lambda-argument: uttryck
- Denna funktion kan ha valfritt antal argument men bara ett uttryck, som utvärderas och returneras.
- Man är fri att använda lambdafunktioner där funktionsobjekt krävs.
- Du måste hålla i din kunskap om att lambda-funktioner är syntaktiskt begränsade till ett enda uttryck.
- Den har olika användningsområden inom speciella programmeringsområden, förutom andra typer av uttryck i funktioner.
Python Lambda-funktionsexempel
I exemplet definierade vi en lambdafunktion( övre ) för att konvertera en sträng till versaler med hjälp av övre() .
Denna kod definierar en lambdafunktion som heter upper>
som tar en sträng som argument och konverterar den till versaler med hjälp av upper()>
metod. Den tillämpar sedan denna lambda-funktion på strängen 'techcodeview.com' och skriver ut resultatet
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
>
>
Produktion:
GEEKSFORGEEKS>
Användning av Lambda-funktionen i Python
Låt oss se några av de praktiska användningarna av Python lambda-funktionen.
Tillståndskontroll med Python lambda-funktion
Här, den 'format_numriskt' anropar lambda-funktionen, och num skickas som en parameter för att utföra 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>
Skillnaden mellan Lambda-funktioner och def-definierad funktion
Koden definierar en kubfunktion som använder både ' def'>
nyckelord och en lambdafunktion. Den beräknar kuben för ett givet tal (5 i det här fallet) med båda metoderna och skriver ut resultaten. Utgången är 125 för båda ' def'>
och lambda-funktioner, vilket visar att de uppnår samma kubberäkning.
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 exemplet ovan, både kub() funktion och lambda_cube() fungerar på samma sätt och som avsett. Låt oss analysera ovanstående exempel lite mer:
Med lambdafunktion | Utan lambdafunktion |
---|---|
Stöder enradiga uttalanden som ibland returnerar något värde. | Stöder valfritt antal rader inuti ett funktionsblock |
Bra för att utföra korta operationer/datamanipulationer. | Bra för alla fall som kräver flera rader kod. |
Att använda lambdafunktionen kan ibland minska läsbarheten av kod. | Vi kan använda kommentarer och funktionsbeskrivningar för enkel läsbarhet. |
Praktisk användning av Python lambda-funktionen
Python Lambda-funktion med listförståelse
På varje iteration inuti listförståelse , skapar vi en ny lambda-funktion med standardargumentet x (där x är det aktuella objektet i iterationen). Senare, inuti for-loopen, anropar vi samma funktionsobjekt som har standardargumentet som använder Artikel() och få önskat värde. Således, är_jämn_lista lagrar listan över lambdafunktionsobjekt.
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
Här använder vi Max lambda-funktion för att hitta maximalt två heltal.
Python3
Max> => lambda> a, b : a> if> (a>b)> else> b> print> (> Max> (> 1> ,> 2> ))> |
>
>
Produktion:
2>
Python Lambda med flera påståenden
Lambdafunktioner tillåter inte flera satser, men vi kan skapa två lambdafunktioner och sedan kalla den andra lambdafunktionen som en parameter till den första funktionen. Låt oss försöka hitta det andra maximala elementet med lambda.
Koden definierar en lista över underlistor som kallas ' List'>
. Den använder lambda-funktioner för att sortera varje underlista och hitta det näst största elementet i varje underlista. Resultatet är en lista över de näst största elementen, som sedan skrivs ut. Utdatat visar det näst största elementet från varje underlista i den ursprungliga listan.
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 användas tillsammans med inbyggda funktioner som filtrera() , Karta() och minska() .
Använda lambda() Funktion med filter()
Filter()-funktionen i Python tar in en funktion och en lista som argument. Detta erbjuder ett elegant sätt att filtrera bort alla element i en sekvenssekvens, för vilken funktionen returnerar True. Här är ett litet program som returnerar de udda talen från en inmatningslista:
Filtrera bort alla udda tal med filter() och lambda-funktionen
Här returnerar lambda x: (x % 2 != 0) Sant eller Falskt om x inte är jämnt. Eftersom filter() bara håller element där den producerar Sann , sålunda tar den bort alla udda tal som genereras 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]>
Filtrera alla personer som är äldre än 18, med lambda och filter()-funktionen
Koden filtrerar en lista över åldrar och extraherar åldrarna för vuxna (åldrar över 18) med hjälp av en lambdafunktion och ' filter'>
fungera. Den skriver sedan ut listan över vuxna åldrar. Utdatan visar åldrarna på personer som är 18 år eller äldre.
Python3
ages> => [> 13> ,> 90> ,> 17> ,> 59> ,> 21> ,> 60> ,> 5> ]> adults> => list> (> filter> (> lambda> age: age>> 18> , ages))> print> (adults)> |
fackförbund vs fackförbund alla
>
>
Produktion:
[90, 59, 21, 60]>
Använda lambda()-funktionen med map()
Map()-funktionen i Python tar in en funktion och en lista som ett argument. Funktionen anropas med en lambdafunktion och en lista och en ny lista returneras som innehåller alla lambdamodifierade poster som returneras av den funktionen för varje artikel. Exempel:
Multiplicera alla element i en lista med 2 med funktionen lambda och map().
Koden fördubblar varje element i en lista med hjälp av en lambda-funktion och ' map'>
fungera. Den skriver sedan ut den nya listan med de dubblerade elementen. Utdatan visar varje element från originallistan, multiplicerat 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]>
Omvandla alla element i en lista till versaler med lambda och map()-funktionen
Koden konverterar en lista över djurnamn till versaler med hjälp av en lambda-funktion och ' map'>
fungera. Den skriver sedan ut listan med djurnamnen med versaler. Utdatat visar djurnamnen med stora bokstäver.
Python3
animals> => [> 'dog'> ,> 'cat'> ,> 'parrot'> ,> 'rabbit'> ]> uppered_animals> => list> (> map> (> lambda> animal: animal.upper(), animals))> print> (uppered_animals)> |
>
>
Produktion:
['DOG', 'CAT', 'PARROT', 'RABBIT']>
Använda lambda() Funktion med reduce()
De minska() funktion i Python tar in en funktion och en lista som argument. Funktionen anropas med en lambdafunktion och ett iterabelt och ett nytt reducerat resultat returneras. Detta utför en repetitiv operation över paren av iterabel. Funktionen reduce() tillhör funktionsverktyg modul.
En summa av alla element i en lista med lambda och reduce() funktion
Koden beräknar summan av element i en lista med hjälp av ' reduce'>
funktion från ' functools'>
modul. Den importerar ' reduce'>
, definierar en lista, tillämpar en lambdafunktion som lägger till två element åt gången och skriver ut summan av alla element i listan. Utgången visar den beräknade summan.
Python3
from> functools> import> reduce> li> => [> 5> ,> 8> ,> 10> ,> 20> ,> 50> ,> 100> ]> sum> => reduce> ((> lambda> x, y: x> +> y), li)> print> (> sum> )> |
>
>
Produktion:
193>
Här läggs resultaten av de två föregående elementen till nästa element och detta fortsätter till slutet av listan som (((((5+8)+10)+20)+50)+100).
Hitta det maximala elementet i en lista med lambda och reduce()-funktionen
Koden använder ' functools'>
modul för att hitta det maximala elementet i en lista ( ' lis'>
) genom att använda ' reduce'>
funktion och en lambdafunktion. Den skriver sedan ut det maximala elementet, vilket är 6 i detta fall.
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>