Capire e usare la funzione map in Python
La funzione map integrata in Python serve per applicare una funzione a tutti gli elementi di un iterabile.
Campi di applicazione della funzione map in Python
In Python la funzione map è un modo elegante per elaborare contenuti dagli iterabili. Gli iterabili sono oggetti Python sui quali potete iterare. Oltre alle liste in Python si tratta ad esempio anche delle tuple in Python. In sostanza la funzione map può essere utilizzata al posto di un ciclo for in Python, che considera ogni elemento dell’iterabile. L’uso di map è utile soprattutto per applicare la stessa identica funzione a ciascuno di questi elementi. Potete poi passarlo alla funzione semplicemente come parametro.
La sintassi di Python map
La sintassi della funzione map in Python non è complicata:
map(function, iterable)
pythonCome potete vedere nell’esempio di codice, la funzione riceve due parametri. Il primo parametro descrive la funzione che deve essere applicata a ciascun elemento del vostro iterabile. Il secondo è questo stesso iterabile sul quale intendete iterare. La funzione restituisce un oggetto della classe map in Python a cui è stato applicato la funzione da voi passata. Potete passare questo valore restituito a funzioni come list() o set() per lavorare con i dati.
La funzione map in Python nella pratica
Per illustrare il comportamento della funzione ricorriamo a un esempio di codice:
def incrementare(n):
return n + 1
numeri = (0, 1, 2, 3, 4)
risultato = map(incrementare, numeri)
risultato_lista = list(risultato)
pythonPer prima cosa nella sezione di codice viene creata una funzione con il nome “incrementare” che riceve un numero e fa esattamente ciò che suggerisce il nome. Segue la creazione di una lista Python “numeri” che contiene le cifre da 0 a 4 compreso. La parte più avvincente è la chiamata di map: alla funzione vengono passati come primo parametro di trasferimento la funzione “incrementare” definita nel codice e come secondo parametro di trasferimento la lista “numeri”. Il risultato viene salvato nella variabile chiamata “risultato”.
Per poter continuare a lavorare con il risultato, nell’ultima riga del codice di esempio il risultato viene convertito in una lista. Osservando questa lista, ad esempio, con la funzione print in Python, noterete che tutti gli elementi della lista “numeri” passata a map sono stati incrementati di 1. Sullo schermo sarebbe quindi restituito quanto segue: “(1, 2, 3, 4, 5)”.
Python è perfetto anche per i progetti web. Con Deploy Now di IONOS potete distribuire in modo facilissimo i vostri progetti web e compilarli automaticamente tramite GitHub.
Python map con le funzioni lambda
Se le funzioni che passate a map sono solo funzioni che volete definire per gli elementi del vostro iterabile, può essere utile passare la funzione a map come espressione lambda. Un’espressione lambda in Python è sostanzialmente una notazione breve di cui potete servirvi per usare una funzione come parametro di trasferimento. Poiché le funzioni così definite non hanno un proprio nome e non possono essere chiamate altrove nel codice, si parla anche di funzioni anonime.
Facendo riferimento ancora una volta all’esempio di codice della funzione map già spiegato, è possibile sostituire la funzione “incrementare” anche con un’espressione lambda, snellendo il codice:
numeri = (0, 1, 2, 3, 4)
risultato = map(lambda n: n + 1, numeri)
risultato_lista = list(risultato)
pythonFondamentalmente non cambia nulla nel comportamento del codice. Solo la funzione “incrementare” è stata sostituita da un’espressione lambda introdotta dalla parola chiave “lambda”. Segue il parametro che altrimenti scrivereste nell’intestazione della funzione. Dopo i due punti potete specificare la restituzione dell’espressione lambda. Come potete vedere, grazie all’espressione lambda questa variante del codice è molto più corta.
Passare più iterabili a map in Python
Se volete elaborare due iterabili, potete usare anche la funzione map in Python. Un esempio aiuta a comprendere come si applica map a due iterabili:
a = (2, 3, 4)
b = (3, 4, 5)
risultato = map(lambda x, y: x + y, a, b)
risultato_lista = list(risultato)
pythonNell’esempio sopra, questa volta sono state create due liste chiamate “a” e “b”, che contengono tre numeri ciascuna. Per la chiamata di map si usa di nuovo una funzione anonima con un’espressione lambda. Ora però riceve due parametri x e y e restituisce la loro somma. Come ulteriori parametri passiamo entrambe le liste a map e riconvertiamo il risultato della chiamata di funzione in una lista. Il risultato è “(5, 7, 9)”, in quanto i numeri delle due liste sono stati parzialmente sommati.