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)>> 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>>> 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>>> |
>
>
Išvestis:
The maximum element of the list is : 6>