lambda în Python

Funcții Python 3.0+

Creează o funcție mică, fără nume, scrisă pe un singur rând.

Sintaxă
lambda parametri: expresie

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 if pe mai multe rânduri sau o atribuire) într-un lambda. 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ă.