Lambda In Python
Lambda in Python¶
Obiettivi della Lezione¶
Al termine di questa lezione sarai in grado di:
- Comprendere cosa sono le funzioni lambda in Python.
- Scrivere funzioni lambda per eseguire operazioni semplici.
- Utilizzare le funzioni lambda con funzioni integrate come
map()
,filter()
esorted()
. - Applicare le funzioni lambda per scrivere codice più conciso e leggibile.
Introduzione¶
In Python, le funzioni sono fondamentali per strutturare il codice e promuovere il riutilizzo. Oltre alle funzioni definite con la parola chiave def
, Python offre la possibilità di creare funzioni anonime utilizzando la parola chiave lambda
. Le funzioni lambda permettono di dichiarare funzioni in modo rapido e conciso, soprattutto quando si trattano operazioni semplici o si utilizzano funzioni di ordine superiore.
lambda argomenti: espressione
lambda
: parola chiave per dichiarare una funzione lambda.argomenti
: uno o più parametri di input separati da virgole.espressione
: un’unica espressione valutata e restituita dalla funzione.
Quando Usare le Funzioni Lambda?¶
Le funzioni lambda sono utili quando hai bisogno di una funzione per un breve periodo di tempo, soprattutto come argomento di altre funzioni. Sono comunemente utilizzate con funzioni integrate come map()
, filter()
e sorted()
.
# Funzione lambda per raddoppiare un numero
doppio = lambda x: x * 2
# Utilizzo
numero = 5
risultato = doppio(numero)
print(risultato) # Output: 10
10
Esempio 2: Funzione Lambda con Più Argomenti¶
Creare una funzione lambda che somma tre numeri.
# Funzione lambda per sommare tre numeri
somma = lambda a, b, c: a + b + c
# Utilizzo
risultato = somma(1, 2, 3)
print(risultato) # Output: 6
6
Esempio 3: Uso di Lambda con map()
¶
Utilizzare una funzione lambda con map()
per elevare al quadrato ciascun elemento di una lista.
numeri = [1, 2, 3, 4, 5]
# Elevare al quadrato ogni numero nella lista
quadrati = list(map(lambda x: x ** 2, numeri))
print(quadrati) # Output: [1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]
Esempio 4: Uso di Lambda con filter()
¶
Utilizzare una funzione lambda con filter()
per ottenere solo i numeri pari da una lista.
numeri = [1, 2, 3, 4, 5, 6]
# Filtrare i numeri pari
numeri_pari = list(filter(lambda x: x % 2 == 0, numeri))
print(numeri_pari) # Output: [2, 4, 6]
[2, 4, 6]
Esempio 5: Uso di Lambda con sorted()
¶
Ordinare una lista di dizionari in base a un valore specifico.
studenti = [
{'nome': 'Luca', 'voto': 88},
{'nome': 'Anna', 'voto': 92},
{'nome': 'Marco', 'voto': 85}
]
# Ordinare in base al voto
studenti_ordinati = sorted(studenti, key=lambda x: x['voto'])
print(studenti_ordinati)
[{'nome': 'Marco', 'voto': 85}, {'nome': 'Luca', 'voto': 88}, {'nome': 'Anna', 'voto': 92}]
Esercizi Interattivi¶
Esercizio 1: Calcolo del Fattoriale¶
Scrivi una funzione lambda che calcola il fattoriale di un numero (nota: questo richiede l’uso di una funzione ricorsiva o di un’altra funzione).
Suggerimento: Poiché le lambda non supportano la ricorsione, combina la lambda con reduce()
e range()
.
Soluzione:
from functools import reduce
numero = 5
fattoriale = reduce(lambda x, y: x * y, range(1, numero + 1))
print(fattoriale) # Output: 120
120
Esercizio 2: Filtrare Parole Lunghe¶
Data una lista di parole, utilizza una funzione lambda per filtrare le parole che hanno più di 5 caratteri.
parole = ["python", "funzione", "lambda", "codice", "programmazione", "AI"]
Soluzione:
parole_lunghe = list(filter(lambda x: len(x) > 5, parole))
print(parole_lunghe)
# Output: ['python', 'funzione', 'lambda', 'programmazione']
['python', 'funzione', 'lambda', 'codice', 'programmazione']
Esercizio 3: Convertire Temperatura¶
Utilizza map()
e una funzione lambda per convertire una lista di temperature da Celsius a Fahrenheit.
Formula: F = C * 9/5 + 32
celsius = [0, 20, 30, 100]
Soluzione:
fahrenheit = list(map(lambda x: x * 9/5 + 32, celsius))
print(fahrenheit) # Output: [32.0, 68.0, 86.0, 212.0]
[32.0, 68.0, 86.0, 212.0]
Esercizio 4: Somma dei Quadrati¶
Calcola la somma dei quadrati dei numeri da 1 a 10 utilizzando una funzione lambda e reduce()
.
Soluzione:
from functools import reduce
somma_quadrati = reduce(lambda x, y: x + y**2, range(1, 11), 0)
print(somma_quadrati) # Output: 385
385
Buone Pratiche e Consigli¶
- Semplicità: Utilizza le funzioni lambda per operazioni semplici. Evita di creare funzioni lambda troppo complesse che possono ridurre la leggibilità.
- Chiarezza: Anche se le funzioni lambda permettono di scrivere codice conciso, assicurati che il codice rimanga comprensibile per te e per altri sviluppatori.
- Uso Appropriato: Le lambda sono ideali quando passate come argomenti a funzioni di ordine superiore. Per funzioni più complesse, preferisci definire una funzione con
def
. - Limitazioni: Ricorda che una funzione lambda può contenere solo un’espressione. Non è possibile includere istruzioni multiple o assegnazioni di variabili.
Conclusione¶
Le funzioni lambda sono uno strumento potente in Python che consente di scrivere codice in modo più elegante e conciso, soprattutto quando si tratta di operazioni semplici o di funzioni di ordine superiore. Comprendere come e quando utilizzarle può migliorare significativamente la qualità e l’efficienza del tuo codice.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Lambda Expressions
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Anonymous Functions | Lambda