Lambda in Python

Studiamo le funzioni lambda in Python, ovvero le funzioni anonime.

Nelle precedenti lezioni abbiamo visto come creare delle funzioni utilizzando la parola chiave def seguita dal nome della funzione e dagli argomenti se ce ne sono.

Al contrario la funzione lambda non ha un nome, ma solo gli argomenti e un’unica espressione di calcolo.

La sintassi della funzione lambda in Python è dunque la seguente:

lambda argomenti: espressione

Esempi sulla funzione lambda in Python

Facciamo alcuni esempi per capire meglio il funzionamento.

Come primo esempio costruiamo una funzione lambda utile per calcolare il cubo di un numero:


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

La stessa funzione utilizzando def si poteva scrivere in questo modo:



def f_cube(x):
      return x * x * x

print(f_cube(3))

Il risultato è chiaramente lo stesso.

Possiamo anche scrivere in maniera molto compatta in questo modo:



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

Più argomenti nella funzione lambda in Python

Si possono inserire anche più argomenti, separandoli da virgole. Facciamo un esempio con una funzione che calcola l’area di un rettangolo.



f_area = lambda x, y : x * y
print(f_area(4,5))

#in maniera compatta
print((lambda x, y: x*y)(4,5))

Valutare un’espressione Booleana

Possiamo anche valutare un’espressione booleana.

Prendiamo ad esempio in considerazione un numero e stabiliamo se è pari oppure dispari.



f_even = lambda x : x % 2 == 0
print(f_even(8))
print(f_even(9))

L’output prodotto sarà dunque questo:

True
False

Perchè usare la funzione lambda in Python

Sicuramente uno dei motivi per cui viene utilizzata è quello di risparmiare righe di codice, migliorandone la leggibilità. Quando infatti devo usare una funzione per un tempo breve, non serve definirla.

Inoltre uno dei campi maggiori di utilizzo è quando si vuole passare una funzione come argomento di un’altra funzione.

Vedremo molto spesso le funzioni lambda utilizzare con le funzioni map() o filter() di Python.

Facciamo un primo esempio utilizzando filter():


list_number = [11,8,4,5]

new_list = list(filter(lambda x: x%2 == 0, list_number))

print(new_list)

In questo caso l’output prodotto sarà questo: [8, 4]

Oppure possiamo anche utilizzare map().


list_number = [11,8,4,5]

new_list = list(map(lambda x: x%2==0, list_number))

print(new_list)

L’output prodotto sarà questo: [False, True, True, False]

La lista sarà popolata con i valori booleani.

Potremmo anche utilizzare un ciclo for in:


list_number = [11,8,4,5]

new_list = [even for even in list_number if even %2 ==0]

print(new_list)

Infine possiamo aggiungere che l’utilizzo della funzione lambda in Python è particolarmente indicato quando si lavora con alcune librerie, come ad esempio Pandas, Numpy, ecc.

Invece non si può utilizzare quando ad esempio vogliamo eseguire più operazioni indipendenti nell’ambito di una funzione. O ancora quando ho bisogno di scrivere istruzioni su più righe.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *