2.1 Definizione delle lambda funzioni
Le lambda funzioni, conosciute anche come funzioni anonime, sono
funzioni compatte e monolineari senza nome, che
possono essere create usando la parola chiave lambda
.
A differenza delle funzioni normali, definite usando
def
, le lambda sono create al volo e
solitamente utilizzate per operazioni semplici che si eseguono in una riga.
La sintassi di una lambda funzione consiste nella parola chiave
lambda
, seguita dagli argomenti, due punti, e un'espressione:
lambda argomenti: espressione
Le lambda funzioni possono accettare qualunque numero di argomenti, ma possono contenere solo un'espressione. Il valore di questa espressione viene automaticamente restituito.
Esempi:
Lambda funzione | Funzione normale |
---|---|
|
|
|
|
|
|
2.2 Utilizzo delle lambda funzioni
Le lambda funzioni sono spesso usate in combinazione con altre funzioni,
come map()
, filter()
e
sorted()
, così come argomenti per altre funzioni.
Uso con map()
La funzione map()
applica una funzione specificata a ogni elemento
di un oggetto iterabile e restituisce un iteratore con i risultati.
Le lambda funzioni sono ideali con map()
,
permettendo di definire in modo conciso la funzione per trasformare
gli elementi.
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # Output: [1, 4, 9, 16, 25]
Uso con filter()
La funzione filter()
restituisce un iteratore composto da
elementi di un oggetto iterabile per cui la funzione specificata restituisce
True. Le lambda funzioni permettono di definire rapidamente la condizione di filtro.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # Output: [2, 4, 6, 8, 10]
Uso con sorted()
La funzione sorted()
ordina gli elementi di un oggetto iterabile.
Le lambda funzioni possono essere usate per definire un criterio personalizzato
per l'ordinamento usando l'argomento key
.
words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # Output: ['date', 'apple', 'banana', 'cherry']
Lambdas nelle espressioni
Le lambda funzioni possono essere usate all'interno di altre espressioni, come comprensioni di liste e generatori di dizionari.
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs) # Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
2.3 Limitazioni delle lambda funzioni
Le lambda funzioni hanno diverse limitazioni rispetto alle funzioni normali:
Limitate alle espressioni:
Le lambda funzioni possono contenere solo un'espressione e non possono includere
operatori complessi come cicli o operatori di controllo del flusso
(ad esempio, if
, else
, ecc.).
Mancanza di documentazione:
Le lambda funzioni non possono contenere una docstring, il che rende difficile documentare la loro funzionalità.
Debug limitato:
A causa della mancanza di un nome e di documentazione, è più difficile fare il debug delle lambda funzioni rispetto alle funzioni normali.
Esempio di limitazione delle lambda funzioni
Tentare di usare più espressioni all'interno di una lambda funzione causerà un errore di sintassi:
# Questo codice genererà un errore
invalid_lambda = lambda x: x ** 2; print(x)
GO TO FULL VERSION