Lambdas

Python SELF IT
Livello 13 , Lezione 2
Disponibile

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

square = lambda x: x ** 2
print(square(5))  # Output: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Output: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

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)
        
    
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION