Ce face lambda
lambda creează o funcție anonimă care returnează valoarea unei singure expresii. Nu are nevoie de return: rezultatul expresiei este returnat automat.
Este folosită mai ales ca argument pentru alte funcții: cheia de sortare din sorted(), funcția din map() sau filter(). Pentru orice mai lung de o expresie, scrie o funcție normală cu def.
Exemple
Exemplul 1: O funcție lambda simplă
dublu = lambda x: x * 2
aduna = lambda a, b: a + b
print(dublu(7))
print(aduna(3, 4))
Rezultat
14
7
Exemplul 2: Cheie de sortare
Sortăm produsele după preț, adică după al doilea element din fiecare tuplu.
produse = [("Cafea", 32.9), ("Pâine", 4.5), ("Lapte", 7)]
ieftine_primele = sorted(produse, key=lambda p: p[1])
print(ieftine_primele)
Rezultat
[('Pâine', 4.5), ('Lapte', 7), ('Cafea', 32.9)]
Exemplul 3: Cu map() și filter()
numere = [1, 2, 3, 4, 5, 6]
patrate = list(map(lambda n: n ** 2, numere))
pare = list(filter(lambda n: n % 2 == 0, numere))
print(patrate)
print(pare)
Rezultat
[1, 4, 9, 16, 25, 36]
[2, 4, 6]
Greșeli frecvente
- Încerci să pui mai multe instrucțiuni (de exemplu un
ifpe mai multe rânduri sau o atribuire) într-unlambda. Este permisă doar o expresie. - Atribui un lambda unei variabile pentru a-l folosi des. Ghidul de stil PEP 8 recomandă în acest caz
def, care dă și un nume util în mesajele de eroare.
Comenzi înrudite
def: Definește o funcție: un bloc de cod cu nume, pe care îl poți apela de oricâte ori.sorted(): Returnează o listă nouă, sortată, cu elementele unei colecții.map(): Aplică o funcție fiecărui element dintr-o colecție.filter(): Păstrează doar elementele pentru care o funcție returnează o valoare adevărată.