logo

Lambda funkcije Python

Lambda funkcije Python so anonimne funkcije pomeni, da je funkcija brez imena. Kot že vemo, def ključna beseda se uporablja za definiranje običajne funkcije v Pythonu. Podobno je lambda ključna beseda se uporablja za definiranje anonimne funkcije v Python .

Sintaksa funkcije Python Lambda

Sintaksa: lambda argumenti : izraz



  • Ta funkcija ima lahko poljubno število argumentov, vendar samo en izraz, ki je ovrednoten in vrnjen.
  • Funkcije lambda lahko uporabljate povsod, kjer so potrebni funkcijski objekti.
  • Vedeti morate, da so lambda funkcije skladenjsko omejene na en izraz.
  • Ima različne uporabe na določenih področjih programiranja, poleg drugih vrst izrazov v funkcijah.

Primer funkcije Python Lambda

V primeru smo definirali lambda funkcijo ( zgornji ), da pretvorite niz v velike črke z uporabo zgornji() .

Ta koda definira lambda funkcijo z imenom upper> ki sprejme niz kot svoj argument in ga pretvori v velike črke z uporabo upper()> metoda. Nato uporabi to lambda funkcijo za niz 'techcodeview.com' in natisne rezultat

Python3








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

>

>

Izhod:

GEEKSFORGEEKS>

Uporaba funkcije Lambda v Pythonu

Oglejmo si nekaj praktičnih uporab funkcije lambda Python.

Preverjanje stanja z uporabo funkcije lambda Python

Tukaj, 'format_numric' pokliče funkcijo lambda in num se posreduje kot parameter za izvajanje operacij.

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

>

>

Izhod:

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

Razlika med funkcijami Lambda in definirano definirano funkcijo

Koda definira funkcijo kocke z uporabo obeh ' def'> ključna beseda in funkcija lambda. Izračuna kub danega števila (v tem primeru 5) z uporabo obeh pristopov in natisne rezultate. Izhod je 125 za oba ' def'> in lambda funkcije, ki dokazujejo, da dosegajo enak izračun kocke.

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

>

>

Izhod:

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

Kot lahko vidimo v zgornjem primeru, oba kocka() funkcijo in lambda_kocka() funkcija deluje enako in kot je predvideno. Analizirajmo zgornji primer nekoliko bolj:

Z lambda funkcijo

Brez lambda funkcije

Včasih podpira enovrstične stavke, ki vrnejo neko vrednost. Podpira poljubno število vrstic znotraj funkcijskega bloka
Dobro za izvajanje kratkih operacij/podatkovnih manipulacij. Dobro za vse primere, ki zahtevajo več vrstic kode.
Uporaba funkcije lambda lahko včasih zmanjša berljivost kode. Za lažjo berljivost lahko uporabimo komentarje in opise funkcij.

Praktična uporaba lambda funkcije Python

Lambda funkcija Python z razumevanjem seznama

Pri vsaki ponovitvi znotraj razumevanje seznama , ustvarjamo novo lambda funkcijo s privzetim argumentom x (kjer je x trenutni element v ponovitvi). Kasneje znotraj zanke for kličemo isti funkcijski objekt s privzetim argumentom predmet() in dobite želeno vrednost. torej je_soden_seznam shrani seznam objektov lambda funkcije.

Python3




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

>

>

Izhod:

10 20 30 40>

Lambda funkcija Python z if-else

Tukaj uporabljamo maks lambda funkcija za iskanje največ dveh celih števil.

Python3




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

>

>

Izhod:

2>

Python Lambda z več stavki

Funkcije lambda ne dovoljujejo več izjav, lahko pa ustvarimo dve funkciji lambda in nato pokličemo drugo funkcijo lambda kot parameter za prvo funkcijo. Poskusimo najti drugi največji element z lambdo.

Koda definira seznam imenovanih podseznamov ' List'> . Uporablja lambda funkcije za razvrščanje vsakega podseznama in iskanje drugega največjega elementa v vsakem podseznamu. Rezultat je seznam drugih največjih elementov, ki se nato natisne. Izhod prikaže drugi največji element iz vsakega podseznama na izvirnem seznamu.

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

>

>

Izhod:

[3, 16, 9]>

Lambda funkcije lahko uporabljate skupaj z vgrajenimi funkcijami, kot je filter() , zemljevid() in zmanjšati () .

Uporaba funkcije lambda() s filter()

Funkcija filter() v Pythonu sprejme funkcijo in seznam kot argumenta. To ponuja eleganten način za filtriranje vseh elementov zaporedja zaporedja, za katerega funkcija vrne True. Tukaj je majhen program, ki vrne liha števila z vhodnega seznama:

Filtrirajte vsa liha števila s funkcijo filter() in lambda

Tu lambda x: (x % 2 != 0) vrne True ali False, če x ni sod. Ker filter() hrani samo elemente, kjer jih ustvari Prav , zato odstrani vsa liha števila, ki so nastala False .

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

>

>

Izhod:

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

Filtrirajte vse osebe, starejše od 18 let, z uporabo funkcije lambda in filter().

Koda filtrira seznam starosti in izlušči starost odraslih (starost nad 18) z uporabo funkcije lambda in ' filter'> funkcijo. Nato natisne seznam odraslih starosti. Izhod prikazuje starost posameznikov, ki so stari 18 let ali več.

Python3




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

ujemi in preizkusi javo
>

>

Izhod:

[90, 59, 21, 60]>

Uporaba funkcije lambda() z map()

Funkcija map() v Pythonu sprejme funkcijo in seznam kot argument. Funkcija se pokliče s funkcijo lambda in seznamom, vrne se nov seznam, ki vsebuje vse elemente, spremenjene z lambda, ki jih ta funkcija vrne za vsak element. primer:

Pomnožite vse elemente seznama z 2 z uporabo funkcije lambda in map().

Koda podvoji vsak element na seznamu z uporabo funkcije lambda in ' map'> funkcijo. Nato natisne nov seznam s podvojenimi elementi. Izhod prikaže vsak element s prvotnega seznama, pomnožen z 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)>

>

>

Izhod:

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

Pretvorite vse elemente seznama v velike črke z uporabo funkcije lambda in map().

Koda pretvori seznam imen živali v velike črke z uporabo funkcije lambda in ' map'> funkcijo. Nato natisne seznam z imeni živali z velikimi črkami. Izhod prikaže imena živali z velikimi črkami.

Python3




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

>

>

Izhod:

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

Uporaba funkcije lambda() z reduce()

The zmanjšati () funkcija v Pythonu sprejme funkcijo in seznam kot argument. Funkcijo pokličemo s funkcijo lambda in vrnemo iterable ter nov zmanjšan rezultat. To izvede ponavljajočo se operacijo nad pari iterable. Funkcija reduce() spada med functools modul.

Vsota vseh elementov na seznamu z uporabo funkcije lambda in reduce().

Koda izračuna vsoto elementov na seznamu z uporabo ' reduce'> funkcijo od ' functools'> modul. Uvaža ' reduce'> , definira seznam, uporabi funkcijo lambda, ki doda dva elementa hkrati, in natisne vsoto vseh elementov na seznamu. Izhod prikaže izračunano vsoto.

Python3




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

>

>

Izhod:

193>

Tukaj se rezultati prejšnjih dveh elementov dodajo naslednjemu elementu in to se nadaljuje do konca seznama kot (((((5+8)+10)+20)+50)+100).

Poiščite največji element na seznamu z uporabo funkcije lambda in reduce().

Koda uporablja ' functools'> modul za iskanje največjega elementa na seznamu ( ' lis'> ) z uporabo ' reduce'> funkcijo in funkcijo lambda. Nato natisne največji element, ki je v tem primeru 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>else> b, lis))>

>

>

Izhod:

The maximum element of the list is : 6>