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