Lezioni di Python – 6.3 Map e Filter

Lezioni di Python - 6.3 Map e Filter

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]

⇐ Vai a Lezione 6.2 – Le funzioni Lambda

Vai a Lezione 6.4 – I generatori 

1 commento su “Lezioni di Python – 6.3 Map e Filter

  1. ladecisionegiusta

    penso che i listati che ci sono, in realtà servono a farci ragionare.
    def incrementa(x):
    return x + 1
    lista = [2,6,12,3,5]res = list(map(incrementa,lista))
    print(res)

    vs

    def incrementa(x):
    return x + 1
    lista = [2,6,12,3,5]
    res = list(map(incrementa,lista))
    print(res)

Lascia un commento