logo

Python Lambda funkcijos

Python Lambda funkcijos yra anoniminės funkcijos reiškia, kad funkcija yra be pavadinimo. Kaip jau žinome, def raktinis žodis naudojamas norint apibrėžti įprastą funkciją Python. Panašiai, lambda raktinis žodis naudojamas anoniminei funkcijai apibrėžti Python .

Python Lambda funkcijos sintaksė

Sintaksė: lambda argumentai: išraiška



  • Ši funkcija gali turėti bet kokį argumentų skaičių, bet tik vieną išraišką, kuri įvertinama ir grąžinama.
  • Galima laisvai naudoti lambda funkcijas visur, kur reikalingi funkciniai objektai.
  • Turite žinoti, kad lambda funkcijos sintaksiškai apribotos viena išraiška.
  • Jis naudojamas įvairiai tam tikrose programavimo srityse, be kitų funkcijų išraiškų tipų.

Python Lambda funkcijos pavyzdys

Pavyzdyje apibrėžėme lambda funkciją ( viršutinė ), norėdami konvertuoti eilutę į didžiąsias raides naudodami viršutinis () .

Šis kodas apibrėžia lambda funkciją, pavadintą upper> kuris kaip argumentą paima eilutę ir konvertuoja ją į didžiąsias raides, naudodamas upper()> metodas. Tada ji taiko šią lambda funkciją eilutei „techcodeview.com“ ir išspausdina rezultatą

Python3








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

>

>

Išvestis:

GEEKSFORGEEKS>

Lambda funkcijos naudojimas Python

Pažiūrėkime keletą praktinių Python lambda funkcijos naudojimo būdų.

Būklės tikrinimas naudojant Python lambda funkciją

Čia, 'format_numric' iškviečia lambda funkciją, o skaičius perduodamas kaip parametras operacijoms atlikti.

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

>

>

Išvestis:

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

Skirtumas tarp Lambda funkcijų ir def apibrėžtos funkcijos

Kodas apibrėžia kubo funkciją naudodamas abu def'> raktinis žodis ir lambda funkcija. Jis apskaičiuoja tam tikro skaičiaus (šiuo atveju 5) kubą, naudodamas abu metodus, ir išspausdina rezultatus. Išėjimas yra 125 abiem def'> ir lambda funkcijos, parodydamos, kad jos pasiekia tą patį kubo skaičiavimą.

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

>

>

Išvestis:

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

Kaip matome aukščiau pateiktame pavyzdyje, tiek kubas() funkcija ir lambda_cube() funkcija elgiasi taip pat ir kaip numatyta. Išanalizuokime aukščiau pateiktą pavyzdį šiek tiek plačiau:

Su lambda funkcija

Be lambda funkcijos

Palaiko vienos eilutės teiginius, kurie kartais grąžina tam tikrą reikšmę. Palaiko bet kokį eilučių skaičių funkciniame bloke
Tinka trumpoms operacijoms/duomenims manipuliuoti. Tinka visais atvejais, kai reikia kelių kodo eilučių.
Naudojant lambda funkciją kartais gali sumažėti kodo skaitomumas. Kad būtų lengviau skaityti, galime naudoti komentarus ir funkcijų aprašymus.

Praktinis Python lambda funkcijos naudojimas

Python Lambda funkcija su sąrašo supratimu

Kiekvienoje iteracijoje viduje sąrašo supratimas , kuriame naują lambda funkciją su numatytuoju argumentu x (kur x yra dabartinis iteracijos elementas). Vėliau ciklo for viduje mes iškviečiame tą patį funkcijos objektą, turintį numatytąjį argumentą naudojant prekė () ir gauti norimą vertę. Taigi, yra_lyginis_sąrašas saugo lambda funkcijų objektų sąrašą.

Python3




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

>

>

Išvestis:

10 20 30 40>

Python Lambda funkcija su if-else

Čia mes naudojame Maks lambda funkcija, kad surastų didžiausią skaičių dviejų sveikųjų skaičių.

Python3




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

>

>

Išvestis:

2>

Python Lambda su keliais teiginiais

Lambda funkcijos neleidžia pateikti kelių teiginių, tačiau galime sukurti dvi lambda funkcijas ir iškviesti kitą lambda funkciją kaip pirmosios funkcijos parametrą. Pabandykime rasti antrą maksimalų elementą naudodami lambda.

Kodas apibrėžia vadinamų subsąrašų sąrašą List'> . Jis naudoja lambda funkcijas, kad surūšiuotų kiekvieną posąrašį ir surastų antrą pagal dydį elementą kiekviename sąraše. Rezultatas yra antrųjų pagal dydį elementų sąrašas, kuris vėliau atspausdinamas. Išvestyje rodomas antras pagal dydį elementas iš kiekvieno pradinio sąrašo subsąrašo.

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

>

>

Išvestis:

[3, 16, 9]>

Lambda funkcijas galima naudoti kartu su įmontuotomis funkcijomis, pvz filtras() , žemėlapis () ir sumažinti () .

Naudojant funkciją lambda() su filtru()

„Python“ funkcija filtras () priima funkciją ir sąrašą kaip argumentus. Tai suteikia elegantišką būdą filtruoti visus sekos sekos elementus, kuriems funkcija grąžina True. Čia yra nedidelė programa, kuri grąžina nelyginius skaičius iš įvesties sąrašo:

Išfiltruokite visus nelyginius skaičius naudodami filtrą () ir lambda funkciją

Čia lambda x: (x % 2 != 0) grąžina True arba False, jei x nėra lyginis. Kadangi filtras () išlaiko elementus tik ten, kur jis sukuriamas Tiesa , todėl pašalinami visi sugeneruoti nelyginiai skaičiai Netiesa .

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

>

>

Išvestis:

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

Filtruokite visus vyresnius nei 18 metų žmones naudodami lambda ir filtro () funkciją

Kodas filtruoja amžiaus sąrašą ir išskiria suaugusiųjų (vyresnių nei 18 metų) amžių, naudodamas lambda funkciją ir filter'> funkcija. Tada išspausdinamas suaugusiųjų amžiaus sąrašas. Išvestyje rodomas 18 metų ir vyresnių asmenų amžius.

Python3




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

Python programos pavyzdžiai
>

>

Išvestis:

[90, 59, 21, 60]>

Naudojant funkciją lambda() su map()

„Python“ funkcija map() priima funkciją ir sąrašą kaip argumentą. Funkcija iškviečiama naudojant lambda funkciją ir sąrašą, o pateikiamas naujas sąrašas, kuriame yra visi lambda modifikuoti elementai, kuriuos ta funkcija grąžino kiekvienam elementui. Pavyzdys:

Padauginkite visus sąrašo elementus iš 2 naudodami lambda ir map() funkciją

Kodas padvigubina kiekvieną sąrašo elementą, naudodamas lambda funkciją ir map'> funkcija. Tada išspausdinamas naujas sąrašas su dvigubais elementais. Išvestyje rodomas kiekvienas elementas iš pradinio sąrašo, padaugintas iš 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)>

>

>

Išvestis:

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

Paverskite visus sąrašo elementus didžiosiomis raidėmis naudodami lambda ir map() funkciją

Kodas paverčia gyvūnų pavadinimų sąrašą į didžiąsias raides, naudodamas lambda funkciją ir map'> funkcija. Tada jis išspausdina sąrašą su gyvūnų vardais didžiosiomis raidėmis. Išvestyje gyvūnų vardai rodomi visomis didžiosiomis raidėmis.

Python3




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

>

>

Išvestis:

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

Naudojant lambda() funkciją su reduktoriumi()

The sumažinti () funkcija Python naudoja funkciją ir sąrašą kaip argumentą. Funkcija iškviečiama su lambda funkcija ir kartojama ir grąžinamas naujas sumažintas rezultatas. Tai atlieka pasikartojančią operaciją per iteruojamų porų. Funkcija sumažinti () priklauso funkcinės priemonės modulis.

Visų elementų suma sąraše naudojant lambda ir redukcijos () funkcijas

Kodas apskaičiuoja sąrašo elementų sumą naudodamas reduce'> funkcija iš functools'> modulis. Tai importuoja reduce'> , apibrėžia sąrašą, pritaiko lambda funkciją, kuri vienu metu prideda du elementus ir išspausdina visų sąrašo elementų sumą. Išvestyje rodoma apskaičiuota suma.

Python3




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

>

>

Išvestis:

193>

Čia ankstesnių dviejų elementų rezultatai pridedami prie kito elemento ir tai tęsiasi iki sąrašo pabaigos kaip ((((5+8)+10)+20)+50)+100).

Raskite maksimalų elementą sąraše naudodami lambda ir redukcijos () funkciją

Kodas naudoja functools'> modulį, kad surastumėte maksimalų elementą sąraše ( lis'> ) įdarbindami reduce'> funkcija ir lambda funkcija. Tada išspausdinamas maksimalus elementas, kuris šiuo atveju yra 6.

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>>>b, lis))>

>

>

Išvestis:

The maximum element of the list is : 6>