logo

Funcții Python Lambda

Funcții Python Lambda sunt funcții anonime înseamnă că funcția este fără nume. După cum știm deja def cuvântul cheie este folosit pentru a defini o funcție normală în Python. În mod similar, cel lambda cuvântul cheie este folosit pentru a defini o funcție anonimă în Piton .

Sintaxa funcției Python Lambda

Sintaxă: argumente lambda : expresie



  • Această funcție poate avea orice număr de argumente, dar o singură expresie, care este evaluată și returnată.
  • Unul este liber să folosească funcții lambda oriunde sunt necesare obiecte funcționale.
  • Trebuie să știți că funcțiile lambda sunt limitate sintactic la o singură expresie.
  • Are diverse utilizări în anumite domenii de programare, pe lângă alte tipuri de expresii în funcții.

Exemplu de funcție Python Lambda

În exemplu, am definit o funcție lambda( superior ) pentru a converti un șir în majuscule folosind superior() .

Acest cod definește o funcție lambda numită upper> care ia un șir ca argument și îl convertește în majuscule folosind upper()> metodă. Apoi aplică această funcție lambda șirului „techcodeview.com” și tipărește rezultatul

Python3








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

>

>

Ieșire:

GEEKSFORGEEKS>

Utilizarea funcției Lambda în Python

Să vedem câteva dintre utilizările practice ale funcției Python lambda.

Verificarea condiției Utilizând funcția lambda Python

Aici „format_numeric” apelează funcția lambda, iar num este transmis ca parametru pentru a efectua operațiuni.

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

>

>

Ieșire:

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

Diferența dintre funcțiile Lambda și funcția definită def

Codul definește o funcție cub folosind atât ' def'> cuvânt cheie și o funcție lambda. Acesta calculează cubul unui număr dat (5 în acest caz) utilizând ambele abordări și tipărește rezultatele. Ieșirea este 125 pentru ambele ' def'> și funcțiile lambda, demonstrând că realizează același calcul cub.

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

>

>

Ieșire:

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

După cum putem vedea în exemplul de mai sus, atât cub() funcţia şi lambda_cube() funcția se comportă la fel și conform intenției. Să analizăm puțin mai mult exemplul de mai sus:

Cu functie lambda

Fara functie lambda

Acceptă declarații cu o singură linie uneori care returnează o anumită valoare. Suportă orice număr de linii în interiorul unui bloc funcțional
Bun pentru efectuarea de operațiuni scurte/manipulări de date. Bun pentru orice cazuri care necesită mai multe linii de cod.
Utilizarea funcției lambda poate reduce uneori lizibilitatea codului. Putem folosi comentarii și descrieri de funcții pentru a fi ușor de citit.

Utilizări practice ale funcției Python lambda

Funcția Python Lambda cu înțelegere a listei

La fiecare iterație din interiorul înțelegerea listei , creăm o nouă funcție lambda cu un argument implicit de x (unde x este elementul curent din iterație). Mai târziu, în interiorul buclei for, apelăm același obiect funcție având argumentul implicit folosind articol() și obțineți valoarea dorită. Prin urmare, is_even_list stochează lista de obiecte cu funcție lambda.

Python3




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

>

>

Ieșire:

10 20 30 40>

Funcția Python Lambda cu if-else

Aici folosim Max lambda pentru a găsi maximum două numere întregi.

Python3




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

>

>

Ieșire:

2>

Python Lambda cu mai multe instrucțiuni

Funcțiile lambda nu permit mai multe instrucțiuni, totuși, putem crea două funcții lambda și apoi apelăm cealaltă funcție lambda ca parametru pentru prima funcție. Să încercăm să găsim al doilea element maxim folosind lambda.

Codul definește o listă de subliste numite ' List'> . Folosește funcții lambda pentru a sorta fiecare sublistă și pentru a găsi al doilea element ca mărime din fiecare sublistă. Rezultatul este o listă cu elementele a doua ca mărime, care este apoi tipărită. Ieșirea afișează al doilea element ca mărime din fiecare sublistă din lista originală.

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

>

>

Ieșire:

[3, 16, 9]>

Funcțiile Lambda pot fi utilizate împreună cu funcții încorporate precum filtru() , Hartă() și reduce() .

Utilizarea funcției lambda() cu filter()

Funcția filter() din Python preia o funcție și o listă ca argumente. Aceasta oferă o modalitate elegantă de a filtra toate elementele unei secvențe, pentru care funcția returnează True. Iată un mic program care returnează numerele impare dintr-o listă de intrare:

Filtrați toate numerele impare folosind filter() și funcția lambda

Aici, lambda x: (x % 2 != 0) returnează adevărat sau fals dacă x nu este par. Deoarece filter() păstrează doar elementele acolo unde le produce Adevărat , astfel elimină toate numerele impare care le-au generat Fals .

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

>

>

Ieșire:

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

Filtrați toate persoanele cu vârsta peste 18 ani, folosind funcția lambda și filter().

Codul filtrează o listă de vârste și extrage vârstele adulților (vârste mai mari de 18 ani) folosind o funcție lambda și ' filter'> funcţie. Apoi tipărește lista vârstelor adulte. Rezultatul afișează vârstele persoanelor care au 18 ani sau mai mult.

Python3




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

dfs vs bfs
>

>

Ieșire:

[90, 59, 21, 60]>

Utilizarea funcției lambda() cu map()

Funcția map() din Python preia o funcție și o listă ca argument. Funcția este apelată cu o funcție lambda și o listă și este returnată o listă nouă care conține toate elementele modificate lambda returnate de acea funcție pentru fiecare articol. Exemplu:

Înmulțiți toate elementele unei liste cu 2 folosind funcția lambda și map().

Codul dublează fiecare element dintr-o listă folosind o funcție lambda și ' map'> funcţie. Apoi tipărește noua listă cu elementele dublate. Ieșirea afișează fiecare element din lista originală, înmulțit cu 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)>

>

>

Ieșire:

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

Transformați toate elementele unei liste în majuscule folosind funcția lambda și map().

Codul convertește o listă de nume de animale în majuscule folosind o funcție lambda și ' map'> funcţie. Apoi tipărește lista cu numele animalelor în majuscule. Ieșirea afișează numele animalelor în toate literele mari.

Python3




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

>

>

Ieșire:

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

Utilizarea funcției lambda() cu reduce()

The reduce() funcția din Python preia o funcție și o listă ca argument. Funcția este apelată cu o funcție lambda și se returnează un rezultat iterabil și nou redus. Aceasta efectuează o operație repetitivă peste perechile de iterabil. Funcția reduce() aparține functools modul.

O sumă a tuturor elementelor dintr-o listă folosind funcția lambda și reduce().

Codul calculează suma elementelor dintr-o listă folosind ' reduce'> funcția de la ' functools'> modul. Se importă ' reduce'> , definește o listă, aplică o funcție lambda care adaugă două elemente simultan și tipărește suma tuturor elementelor din listă. Ieșirea afișează suma calculată.

Python3




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

>

>

Ieșire:

193>

Aici rezultatele celor două elemente anterioare sunt adăugate la următorul element și aceasta continuă până la sfârșitul listei ca (((((5+8)+10)+20)+50)+100).

Găsiți elementul maxim dintr-o listă folosind funcția lambda și reduce().

Codul folosește ' functools'> modul pentru a găsi elementul maxim într-o listă ( ' lis'> ) prin angajarea ' reduce'> funcţie şi o funcţie lambda. Apoi tipărește elementul maxim, care este 6 în acest caz.

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

>

>

Ieșire:

The maximum element of the list is : 6>