Map
In Python, esiste una funzione built-in, chiamata map(), che può essere molto utile per le funzioni high-order che operano su liste. Infatti, questa funzione prendete una funzione e un oggetto iterabile (tipo una lista) come argomenti, e restituisce un nuovo oggetto iterabile (tipo una nuova lista) con la funzione applicata per ciascun argomento.
Nel caso delle liste si deve sempre utilizzare la funzione list() che crea una nuova lista
def incrementa(x):
return x + 1
lista = [2,6,12,3,5]
res = list(map(incrementa,lista))
print(res)
eseguendo si ottiene
>>>
[3, 7, 13, 4, 6]
La stessa operazione l’avremmo potuta codificare più semplicemente utilizzando la sintassi lambda, dato che la funzione è semplice (si può esprimere in una sola riga) e non è quindi necessario definirla, ma utilizzarla solo al momento.
lista = [2,6,12,3,5]
res = list(map(lambda x: x+1,lista))
print(res)
Filter
Un’altra funzione molto utile che lavora sugli iterabili è la funzione filter(). Questa funzione filtra un oggetto iterabile selezionando solo gli elementi che rispondono ad un determinato predicato. (Il predicato è una funzione che restituisce un booleano).
lista = [2,6,12,3,5]
res = list(filter(lambda x: x > 5,lista))
print(res)
eseguendo si ottiene
>>>
[6, 12]