logo

Python Lambda funktioner

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>