Ce sunt funcțiile Lambda și cum să le utilizați?



Aflați funcțiile lambda Python împreună cu diferența dintre funcțiile normale și funcțiile lambda și cum pot fi utilizate în filter (), map (), reduce ().

Un nume este o convenție care este utilizată pentru a se referi sau a se adresa oricărei entități. Aproape tot ce ne înconjoară are un nume. Lumea programării merge, de asemenea, în conformitate cu acest lucru. Dar este o necesitate să denumiți totul? Sau puteți avea ceva care este doar „anonim”? Raspunsul este da. ' oferă funcții Lambda, cunoscute și sub numele de funcții anonime, care sunt de fapt fără nume. Așadar, să mergem mai departe pentru a afla despre aceste „Mistere anonime” din Python, în următoarea succesiune.

Deci, să începem :)





De ce să folosiți funcțiile Python Lambda?


Scopul principal al funcțiilor anonime intră în imagine atunci când aveți nevoie de o anumită funcție o singură dată. Ele pot fi create oriunde sunt necesare. Din acest motiv, funcțiile Python Lambda sunt, de asemenea, cunoscute ca funcții de aruncare, care sunt utilizate împreună cu alte funcții predefinite, cum ar fi filter (), hartă (), etc. Aceste funcții ajută la reducerea numărului de linii ale codului dvs. în comparație cu normal .

Pentru a demonstra acest lucru, să mergem mai departe și să aflăm despre funcțiile Python Lambda.



Ce sunt funcțiile Python Lambda?


Funcțiile Python Lambda sunt funcții care nu au niciun nume. Ele sunt, de asemenea, cunoscute ca funcții anonime sau fără nume. Cuvântul „lambda” nu este un nume, ci este un cuvânt cheie. Acest cuvânt cheie specifică faptul că funcția care urmează este anonimă.

Acum, că știți la ce se referă aceste funcții anonime, să ne deplasăm mai departe pentru a vedea cum scrieți aceste funcții Python Lambda.

Cum se scrie funcțiile Lambda în Python?

O funcție Lambda este creată utilizând operatorul lambda și sintaxa sa este după cum urmează:



SINTAXĂ:

argumente lambda: expresie

Piton funcția lambda poate avea orice număr de argumente, dar este nevoie doar de o expresie. Intrările sau argumentele pot începe de la 0 și pot merge până la orice limită. La fel ca orice alte funcții, este perfect să ai funcții lambda fără intrări. Prin urmare, puteți avea funcții lambda în oricare dintre următoarele formate:

EXEMPLU:

lambda: „Specificați scopul”

Aici, funcția lambda nu ia niciun argument.

EXEMPLU:

lambda aunu: „Specificați utilizarea unuiunu'

Aici, lambda ia o intrare, care este ununu.

convertește codul zecimal în codul pitonar binar

În mod similar, puteți avea lambda aunu, la2, la3..lan.

Să luăm câteva exemple pentru a demonstra acest lucru:

EXEMPLUL 1:

a = lambda x: x * x print (a (3))

IEȘIRE: 9

EXEMPLUL 2:

a = lambda x, y: x * y print (a (3,7))

IEȘIRE: douăzeci și unu

După cum puteți vedea, am luat două exemple aici. Primul exemplu folosește funcția lambda cu o singură expresie, în timp ce al doilea exemplu are două argumente transmise. Vă rugăm să rețineți că ambele funcții au o singură expresie urmată de argumente. Prin urmare, funcțiile lambda nu pot fi utilizate acolo unde aveți nevoie de expresii pe mai multe linii.

Pe de altă parte, funcțiile normale Python pot lua orice număr de afirmații în definițiile funcției lor.

Cum reduc funcțiile Anonymous dimensiunea codului?

Înainte de a compara cantitatea de cod necesară, să notăm mai întâi sintaxa și comparați-o cu cea a funcțiilor lambda descrise anterior.

Orice funcție normală în Python este definită folosind un def cuvânt cheie după cum urmează:

SINTAXĂ:

nume_funcție def (parametri):
declarație (e)

După cum puteți vedea, cantitatea de cod necesară pentru o funcție lambda este destul de mică decât cea a funcțiilor normale.

Să rescriem exemplul pe care l-am luat anterior folosind funcții normale acum.

EXEMPLU:

def my_func (x): returnează x * x print (my_func (3))

IEȘIRE: 9

După cum puteți vedea, în exemplul de mai sus, avem nevoie de o instrucțiune return în my_func pentru a evalua valoarea pătratului de 3. Dimpotrivă, funcția lambda nu folosește această instrucțiune return, ci, corpul funcției anonime este scris în aceeași linie ca funcția însăși, după simbolul colonului. Prin urmare, dimensiunea funcției este mai mică decât cea a my_func.

Cu toate acestea, funcțiile lambda din exemplele de mai sus sunt numite folosind altele A. Acest lucru se face deoarece aceste funcții sunt fără nume și, prin urmare, necesită un anumit nume pentru a fi apelat. Dar acest fapt ar putea părea confuz cu privire la de ce să folosiți astfel de funcții fără nume atunci când trebuie să atribuiți de fapt un alt nume pentru a le apela? Și, desigur, după ce mi-am atribuit numele a funcției mele, nu mai rămâne fără nume! Dreapta?

Este o întrebare legitimă, dar ideea este că acesta nu este modul corect de utilizare a acestor funcții anonime.

Funcțiile anonime sunt cel mai bine utilizate în alte funcții de ordin superior care fie folosesc o funcție ca argument, fie returnează o funcție ca ieșire. Pentru a demonstra acest lucru, să trecem acum la următorul nostru subiect.

Funcții Python Lambda în cadrul funcțiilor definite de utilizator:

Așa cum s-a menționat mai sus, funcțiile lambda sunt utilizate în cadrul altor funcții pentru a marca cel mai bun avantaj.

Următorul exemplu constă din new_func, care este o funcție normală Python care ia un argument x. Acest argument este apoi adăugat la un argument necunoscut y care este furnizat prin funcția lambda.

EXEMPLU:

def new_func (x): return (lambda y: x + y) t = new_func (3) u = new_func (2) print (t (3)) print (u (3))

IEȘIRE:

6
5
După cum puteți vedea, în exemplul de mai sus, funcția lambda care este prezentă în new_func este apelată ori de câte ori folosim new_func (). De fiecare dată, putem transmite valori separate argumentelor.

Acum că ați văzut cum să utilizați funcții anonime în cadrul funcțiilor de ordin superior, permiteți-ne să mergem mai departe pentru a înțelege una dintre cele mai populare utilizări ale acestuia, care se află în metodele filter (), map () și reduce ().

Cum se utilizează funcții anonime în filter (), map () și reduce ():

Funcții anonime în interior filtru():

declarație if în interogare sql

filtru():

Metoda filter () este utilizată pentru a filtra iterabilele date (liste, seturi etc.) cu ajutorul unei alte funcții, transmise ca argument, pentru a testa toate elementele ca fiind adevărate sau false.

Sintaxa acestei funcții este:

SINTAXĂ:

filtru (funcție, iterabil)

Acum ia în considerare următorul exemplu:

EXEMPLU:

my_list = [2,3,4,5,6,7,8] new_list = list (filter (lambda a: (a / 3 == 2), my_list)) print (new_list)

IEȘIRE: [6]

Aici, lista_meu este o listă de valori iterabile care este transmisă funcției de filtrare. Această funcție folosește funcția lambda pentru a verifica dacă există valori în listă, care vor echivala cu 2 atunci când este împărțit la 3. Ieșirea constă dintr-o listă care satisface expresia prezentă în funcția anonimă.

Hartă():

Funcția map () din Python este o funcție care aplică o funcție dată tuturor iterabilelor și returnează o nouă listă.

SINTAXĂ:

hartă (funcție, iterabilă)

Să luăm un exemplu pentru a demonstra utilizarea funcțiilor lambda în cadrul funcției map ():

EXEMPLU:

my_list = [2,3,4,5,6,7,8] new_list = list (hartă (lambda a: (a / 3! = 2), li)) print (new_list)

IEȘIRE:

clasa scanerului în exemplu java

[Adevărat, adevărat, adevărat, adevărat, fals, adevărat, adevărat]

Rezultatul de mai sus arată că, ori de câte ori valoarea iterabilelor nu este egală cu 2 atunci când este împărțită la 3, rezultatul returnat ar trebui să fie Adevărat. Prin urmare, pentru toate elementele din lista_meu, revine adevărat, cu excepția valorii 6 atunci când condiția se schimbă în False.

reduce():

Funcția reduce () este utilizată pentru a aplica o altă funcție unei liste de elemente care îi sunt transmise ca parametru și în cele din urmă returnează o singură valoare.

Sintaxa acestei funcții este următoarea:

SINTAXĂ:

reduce (funcție, secvență)

EXEMPLU:

din functools import reduce reduce (lambda a, b: a + b, [23,21,45,98])

Exemplul de mai sus este descris în următoarea imagine:

reduce-python lambda-edureka

IEȘIRE: 187

Rezultatul arată clar că toate elementele listei sunt adăugat continuu pentru a returna rezultatul final.

Cu aceasta, ajungem la sfârșitul acestui articol despre „Python Lambda”. Sper că ești clar cu tot ce ți-a fost împărtășit. Asigurați-vă că exersați cât mai mult posibil și reveniți la experiență.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog „Python Lambda” și vă vom contacta cât mai curând posibil.

Pentru a obține cunoștințe aprofundate despre Python împreună cu diferitele sale aplicații, vă puteți înscrie pentru live cu suport 24/7 și acces pe viață.