Cum să utilizați funcțiile Lambda în Python [cu exemple]
Publicat: 2022-11-10În acest tutorial, veți afla totul despre funcțiile lambda în Python – de la sintaxă pentru definirea funcțiilor lambda până la diferitele cazuri de utilizare cu exemple de cod.
În Python, lambda sunt funcții anonime care au o sintaxă concisă și pot fi utilizate cu alte funcții încorporate utile. Până la sfârșitul acestui tutorial, veți învăța cum să definiți funcțiile lambda și când ar trebui să luați în considerare utilizarea lor peste funcțiile obișnuite Python.
Sa incepem!
Funcția Python Lambda: sintaxă și exemple
Iată sintaxa generală pentru a defini o funcție lambda în Python:
lambda parameter(s):return value
În sintaxa generală de mai sus:
- lambda este cuvântul cheie pe care ar trebui să-l utilizați pentru a defini o funcție lambda, urmat de unul sau mai mulți parametri pe care ar trebui să îi ia funcția.
- Există două puncte care separă parametrii și valoarea returnată .
Când definiți o funcție lambda, trebuie să vă asigurați că valoarea returnată este calculată prin evaluarea unei expresii care se întinde pe o singură linie de cod. Veți înțelege mai bine acest lucru când vom codifica exemple.
Exemple de funcție Python Lambda
Cel mai bun mod de a înțelege funcțiile lambda este să începeți prin a rescrie funcțiile obișnuite Python ca funcții lambda.
Puteți codifica într-un Python REPL sau în editorul online Python al Geekflare.
#1 . Luați în considerare următoarea funcție square()
, care ia un număr, num
, ca argument și returnează pătratul numărului.
def square(num): return num*num
Puteți apela funcția cu argumente și puteți verifica dacă funcționează corect.
>>> square(9) 81 >>> square(12) 144
Puteți atribui această expresie lambda unui nume de variabilă, de exemplu, square1
, pentru a face definiția funcției mai concisă: square1 = lambda num: num*num
și apoi apelați funcția square1
cu orice număr ca argument. Cu toate acestea, știm că lambda sunt funcții anonime, așa că ar trebui să evitați să le atribuiți unei variabile.
Pentru funcția square()
, parametrul este num
și valoarea returnată este num*num
. După ce le-am identificat, le putem conecta la expresia lambda și o putem apela cu un argument, așa cum se arată:
>>> (lambda num: num*num)(2) 4
Acesta este conceptul de expresie a funcției invocate imediat, unde numim o funcție imediat după ce o definim.
#2 . În continuare, să rescriem o altă funcție simplă add()
care ia în numere, num1
și num2
, și returnează suma lor, num1 + num2
.
def add(num1,num2): return num1 + num2
Să numim funcția add()
cu două numere ca argumente:
>>> add(4,3) 7 >>> add(12,5) 17 >>> add(12,6) 18
În acest caz, num1
și num2
sunt cei doi parametri, iar valoarea returnată este num1 + num2
.
>>> (lambda num1, num2: num1 + num2)(3,7) 10
Funcțiile Python pot lua, de asemenea, valori implicite pentru parametri. Să modificăm definiția funcției add()
și să setăm valoarea implicită a parametrului num2
la 10.
def add(num1, num2=10): return num1 + num2
În următoarele apeluri de funcție:
- În primul apel de funcție, valoarea lui
num1
este 1 și valoarea luinum2
este 3. Când treceți valoarea pentrunum2
în apelul de funcție, acea valoare este utilizată; funcția returnează 4.
- Totuși, dacă introduceți un singur argument (
num1
este 7), valoarea implicită de 10 este utilizată pentrunum2
; funcția returnează 17.
>>> add(1,3) 4 >>> add(7) 17
Când scrieți funcții care preiau valori implicite pentru anumiți parametri ca expresii lambda, puteți specifica valoarea implicită atunci când definiți parametrii.
>>> (lambda num1, num2 = 10: num1 + num2)(1) 11
Când ar trebui să utilizați funcțiile Lambda în Python?
Acum că ați învățat elementele de bază ale funcțiilor lambda în Python, iată câteva cazuri de utilizare:
- Când aveți o funcție a cărei expresie returnată este o singură linie de cod și nu trebuie să faceți referire la funcția în altă parte din același modul, puteți utiliza funcții lambda. Am codificat și câteva exemple pentru a înțelege acest lucru.
- Puteți utiliza funcții lambda atunci când utilizați funcții încorporate, cum ar fi map(), filter() și reduce().
- Funcțiile Lambda pot fi utile în sortarea structurilor de date Python, cum ar fi liste și dicționare.
Cum să utilizați Python Lambda cu funcții încorporate
1. Utilizarea Lambda cu map()
Funcția map()
preia un iterabil și o funcție și aplică funcția fiecărui element din iterabil, așa cum se arată:

Să creăm o listă de nums
și să folosim funcția map()
pentru a crea o nouă listă care conține pătratul fiecărui număr din lista de nums
. Observați utilizarea funcției lambda pentru a defini operația de pătrare.
>>> nums = [4,5,6,9] >>> list(map(lambda num:num*num,nums)) [16, 25, 36, 81]
Deoarece funcția map()
returnează un obiect map, ar trebui să îl aruncăm într-o listă.
️ Consultați acest tutorial despre funcția map() în Python.
2. Utilizarea Lambda cu filter()
Să definim nums
, o listă de numere:
>>> nums = [4,5,6,9]
Să presupunem că doriți să filtrați această listă și să păstrați numai numerele impare.
Puteți utiliza funcția încorporată filter()
din Python.
Funcția filter()
preia o condiție și un iterabil : filter(condition, iterable)
. Rezultatul conține doar elementele din iterabilul original care satisfac condiția. Puteți arunca obiectul returnat într-un iterabil Python, cum ar fi lista.

Pentru a filtra toate numerele pare, vom păstra doar numerele impare. Deci expresia lambda ar trebui să fie lambda num: num%2!=0
. Cantitatea num%2
este restul când num
este împărțit la 2.
-
num%2!=0
esteTrue
ori de câte orinum
este impar și -
num%2!=0
esteFalse
ori de câte orinum
este par.
>>> nums = [4,5,6,9] >>> list(filter(lambda num:num%2!=0,nums)) [5, 9]
3. Utilizarea Lambda cu reduce()
Funcția reduce()
include un iterabil și o funcție. Reduce iterabilul prin aplicarea iterativă a funcției pe elementele iterabilului.


Pentru a utiliza funcția reduce()
, va trebui să o importați din modulul functools
încorporat din Python:
>>> from functools import reduce
Să folosim funcția reduce()
pentru a calcula suma tuturor numerelor din lista de nums
. Definim o expresie lambda: lambda num1,num2:num1+num2
, ca funcție de sumă reducătoare.
Operația de reducere va avea loc astfel: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Aici, f este operația de însumare a două articole din listă, definită de funcția lambda.
>>> from functools import reduce >>> nums = [4,5,6,9] >>> reduce(lambda num1,num2:num1+num2,nums) 24
Funcții Python Lambda pentru a personaliza sortarea
Pe lângă utilizarea funcțiilor lambda cu funcții Python încorporate, cum ar fi map()
, filter()
și reduce()
, le puteți folosi și pentru a personaliza funcțiile și metodele încorporate utilizate pentru sortare.

1. Sortarea listelor Python
Când lucrați cu liste Python, va trebui adesea să le sortați pe baza anumitor criterii de sortare. Pentru a sorta listele Python la locul lor, puteți folosi metoda încorporată sort()
pe ele. Dacă aveți nevoie de o copie sortată a listei, puteți utiliza funcția sorted()
.
Sintaxa pentru a utiliza funcția
sorted()
a lui Python estesorted(iterable, key=...,reverse= True | False)
.
– Parametrulkey
este folosit pentru a personaliza sortarea.
– Parametrulreverse
poate fi setat laTrue
sauFalse
; valoarea implicită esteFalse
.
La sortarea listelor de numere și șiruri, sortarea implicită este în ordine crescătoare și, respectiv, în ordine alfabetică. Cu toate acestea, poate doriți uneori să definiți un criteriu personalizat pentru sortare.
Luați în considerare următoarele fruits
din listă. Să presupunem că doriți să obțineți o copie sortată a listei. Ar trebui să sortați șirurile în funcție de numărul de apariții ale lui „p” în ele – în ordine descrescătoare.
>>> fruits = ['apple','pineapple','grapes','mango']
Este timpul să utilizați parametrul key
opțional. Un șir este un iterabil în Python și pentru a obține numărul de apariții ale unui caracter din el, puteți utiliza metoda încorporată .count()
. Așadar, setăm key
la lambda x:x.count('p')
astfel încât sortarea să se bazeze pe numărul de ori când 'p' apare în șir.
>>> fruits = ['apple','pineapple','grapes','mango'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['pineapple', 'apple', 'grapes', 'mango']
În acest exemplu:
-
key
de sortare este numărul de apariții ale caracterului „p” și este definită ca o expresie lambda. - Deoarece am setat parametrul
reverse
laTrue
, sortarea are loc în ordinea descrescătoare a numărului de apariții ale lui „p”.
În lista de fruits
, „ananas” conține 3 apariții pentru „p”, iar șirurile „măr”, „struguri” și „mango” conțin 2, 1 și, respectiv, 0 apariții pentru „p”.
Înțelegerea sortării stabile
Luați în considerare un alt exemplu. Pentru același criteriu de sortare, am redefinit lista de fruits
. Aici, „p” apare în șirurile „măr” și „struguri” de două ori, respectiv o dată. Și nu apare niciodată în șirurile „mango” și „pepene galben”.
>>> fruits = ['mango','apple','melon','grapes'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['apple', 'grapes', 'mango', 'melon']
În lista de ieșiri, „mango” vine înaintea „pepene galben”, chiar dacă ambele nu au caracterul „p”. Dar de ce este acesta cazul? Funcția sorted()
efectuează o sortare stabilă; deci, atunci când numărul de „p” este egal pentru două șiruri, ordinea elementelor din lista originală de fruits
este păstrată.
Ca un exercițiu rapid, schimbați pozițiile „mango” și „pepene galben” în lista de
fruits
, sortați lista în funcție de același criteriu și observați rezultatul.
️ Aflați mai multe despre sortarea listelor Python.
2. Sortarea unui dicționar Python
De asemenea, puteți utiliza lambda atunci când sortați dicționarele Python. Luați în considerare următorul dicționar price_dict
care conține articole și prețurile acestora.
>>> price_dict = { ... 'Milk':10, ... 'Honey':15, ... 'Bread':7, ... 'Candy':3 ... }
Pentru a obține perechile cheie-valoare ale unui dicționar ca o listă de tupluri, puteți utiliza metoda încorporată a dicționarului .items()
:
>>> price_dict_items = price_dict.items() dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])
În Python, toate iterabilele: liste, tupluri, șiruri de caractere și altele, urmează zero-indexarea. Deci primul articol este la indexul 0, al doilea element este la indexul 1 și așa mai departe.
Am dori să sortăm după valoare, care este prețul fiecărui articol din dicționar. În fiecare tuplu din lista price_dict_items
, articolul de la indicele 1 este prețul. Deci, setăm key
la lambda x:x[1]
, deoarece va folosi articolul de la indexul 1, prețul, pentru a sorta dicționarul.
>>> dict(sorted(price_dict_items,key=lambda x:x[1])) {'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}
În ieșire, articolele din dicționar au fost sortate în ordine crescătoare a prețurilor: începând cu „Boomoane”, la prețul de la 3 unități până la „Miere”, la preț de 15 unități.
️ Pentru a afla mai multe, consultați acest ghid detaliat despre sortarea unui dicționar Python după cheie și valoare.
Rezumând
Și iată-l! Ați învățat cum să definiți funcțiile lambda și să le utilizați eficient cu alte funcții încorporate Python. Iată un rezumat al principalelor concluzii:
- În Python, lambda sunt funcții anonime care pot prelua mai multe argumente și pot returna o valoare; expresia care trebuie evaluată pentru a genera această valoare returnată ar trebui să fie o linie de cod. Ele pot fi folosite pentru a face definițiile micilor funcții mai concise.
- Pentru a defini funcția Lambda puteți utiliza sintaxa: lambda parameter(s): return value .
- Unele dintre cazurile de utilizare importante includ utilizarea lor cu funcțiile
map()
,filter()
șireduce()
și ca parametru cheie pentru a personaliza sortarea iterabilelor Python.
Apoi, aflați cum să efectuați împărțirea podelei în Python.