Python Funzione map() con ESEMPI

⚡ Riepilogo intelligente

Python La funzione map() applica una determinata funzione a ogni elemento di un iterabile, come una lista, una tupla, un insieme, un dizionario o una stringa. Restituisce un oggetto map lazy che può essere convertito con list() o iterato tramite un ciclo.

  • 🔢 Sintassi: La funzione map() accetta una funzione e uno o più iterabili e applica tale funzione a ciascun elemento.
  • 🔁 Valore restituito: La funzione map() restituisce un oggetto mappa lazy, quindi è necessario racchiuderlo in list(), tuple() o set() per visualizzare i risultati.
  • 🧩 Iterabili: Liste, tuple, insiemi, dizionari e stringhe funzionano tutti come input per map().
  • lambda: Abbinare map() a una lambda evita di definire una funzione denominata separata per le trasformazioni semplici.
  • Iterabili multipli: Passando più iterabili la funzione viene applicata in parallelo su di essi, fermatiping al minimo.
  • 🤖 Assistenza AI: Gli assistenti basati sull'intelligenza artificiale, come GitHub Copilot, generano chiamate al metodo map() e le trasformazioni in stile map alimentano le pipeline di dati nell'apprendimento automatico.

Python funzione map()

Sintassi

map(function, iterator1,iterator2 ...iteratorN)

Scheda Sintetica

Ecco due parametri importanti:

  • funzione: Una funzione obbligatoria da passare a map(), che verrà applicata a tutti gli elementi presenti nell'iteratore.
  • iteratore: Un oggetto iterabile obbligatorio. Può essere una lista, una tupla, ecc. È possibile passare più oggetti iteratore alla funzione map().

Valore di ritorno

La funzione map() applica la funzione specificata a tutti gli elementi all'interno dell'iteratore e restituisce un oggetto mappa iterabile, ovvero una tupla, una lista, ecc.

Come funziona la funzione map()?

La funzione map() accetta due input: una funzione e un oggetto iterabile. La funzione passata a map() è una normale funzione che itera su tutti i valori presenti nell'oggetto iterabile.

Ad esempio, supponiamo di avere un elenco di numeri e di voler trovare il quadrato di ciascuno di essi.

Per ottenere il risultato, abbiamo bisogno di una funzione che restituisca il quadrato del numero dato. La funzione è la seguente:

def square(n):
	return n*n

L'elenco degli elementi per i quali vogliamo trovare il quadrato è il seguente:

my_list = [2,3,4,5,6,7,8,9]

Ora utilizziamo la funzione integrata map() per ottenere il quadrato di ciascuno degli elementi in my_list.

Il codice finale è il seguente:

def square(n):
    return n*n
my_list = [2,3,4,5,6,7,8,9]
updated_list = map(square, my_list)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x0000002C59601748>
[4, 9, 16, 25, 36, 49, 64, 81]

L'output della funzione map(), come visto sopra, è un oggetto mappa visualizzato sullo schermo come .

Dovrai iterare l'output di map() utilizzando un ciclo for o il metodo list() per ottenere il risultato finale. Nel codice ho utilizzato list() per visualizzare i valori contenuti nell'elenco fornito.

Quindi, utilizzando la funzione map(), siamo in grado di ottenere il quadrato di ciascun numero. L'elenco fornito a map() era [2,3,4,5,6,7,8,9], e utilizzando la funzione square(), l'output che abbiamo ottenuto è [4, 9, 16, 25, 36, 49, 64, 81].

La funzione map() applica la funzione square() a tutti gli elementi della lista. Ad esempio, prende la variabile my_list e aggiorna la lista con il quadrato di ciascun numero. Il risultato viene memorizzato nella variabile updated_list.

Usando map() con Python funzioni integrate

Migliori Python La funzione map() è una funzione integrata e può essere utilizzata anche con altre funzioni integrate disponibili in Python. In questo esempio, useremo il Python round() è la funzione integrata che arrotonda i valori forniti.

Esempio:

La lista che ho è my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]. Ho bisogno dei valori arrotondati per ogni elemento presente nella lista, quindi useremo round() come funzione per map().

my_list = [2.6743,3.63526,4.2325,5.9687967,6.3265,7.6988,8.232,9.6907]
updated_list = map(round, my_list)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x000000E65F901748>
[3, 4, 4, 6, 6, 8, 8, 10]

La funzione round() viene applicata a tutti gli elementi della lista e restituisce una lista con tutti i valori arrotondati, come mostrato nell'output.

Utilizzo di map() con una stringa come iteratore

Possiamo anche utilizzare map() su una stringa. In Python, una stringa si comporta come un array, quindi possiamo facilmente usarla all'interno di map().

In questo esempio, abbiamo una funzione myMapFunc() che si occupa di convertire la stringa data in maiuscolo. La funzione myMapFunc() viene passata alla funzione map(). La funzione map() si occuperà di convertire la stringa data in maiuscolo passandola a myMapFunc().

def myMapFunc(s):
    return s.upper()
my_str = "welcome to guru99 tutorials!"
updated_list = map(myMapFunc, my_str)
print(updated_list)
for i in updated_list:
    print(i, end="")

Produzione:

<map object at 0x000000DF2E711748>
WELCOME TO GURU99 TUTORIALS!

Utilizzo di map() con una lista di Numbers

Per lavorare con una lista nella funzione map(), prendiamo una lista di numeri e moltiplichiamo ciascun numero della lista per 10.

L'elenco che useremo è [2,3,4,5,6,7,8,9]. La funzione myMapFunc() si occupa di moltiplicare il numero dato per 10. La funzione viene passata a map() insieme all'elenco.

Esempio:

def myMapFunc(n):
    return n*10

my_list = [2,3,4,5,6,7,8,9]

updated_list = map(myMapFunc, my_list)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x000000EE2C061898>
[20, 30, 40, 50, 60, 70, 80, 90]

Il risultato che vediamo è che ogni numero nell'elenco viene moltiplicato per 10.

Utilizzo di map() con Tuple

Una tupla è un oggetto in Python che ha elementi separati da virgole e racchiusi tra parentesi tonde. In questo esempio, prenderemo una tupla con valori stringa. La funzione che useremo convertirà i valori dati in maiuscolo.

Esempio:

def myMapFunc(n):
    return n.upper()

my_tuple = ('php','java','python','c++','c')

updated_list = map(myMapFunc, my_tuple)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x0000009C3C3A16A0>
['PHP', 'JAVA', 'PYTHON', 'C++', 'C']

L'output che otteniamo è una tupla con tutti i valori convertiti in maiuscolo.

Utilizzo di map() con il dizionario

A dizionario dentro Python viene creato utilizzando le parentesi graffe ({}). Poiché il dizionario è un iteratore, è possibile utilizzarlo all'interno della funzione map(). Vediamo ora come utilizzare un dizionario come iteratore all'interno di map().

L'esempio seguente mostra il funzionamento di un iteratore di dizionario all'interno della funzione map():

def myMapFunc(n):
    return n*10
my_dict = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_dict)
print(finalitems)
print(list(finalitems))

Produzione:

<map object at 0x0000007EB451DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Utilizzando map() con Set

Un set in Python è una collezione non ordinata di elementi tra parentesi graffe ({}). Poiché set() è anche un iteratore, è possibile utilizzarlo all'interno della funzione map().

Ecco un esempio funzionante di utilizzo di un set come iteratore all'interno della funzione map():

def myMapFunc(n):
    return n*10
my_set = {2,3,4,5,6,7,8,9}
finalitems = map(myMapFunc, my_set)
print(finalitems)
print(list(finalitems))

Produzione:

<map object at 0x000000AC8F05DEF0>
[20, 30, 40, 50, 60, 70, 80, 90]

Utilizzo di map() con la funzione Lambda

In Python, le espressioni lambda vengono utilizzate per costruire funzioni anonime. Dovrai utilizzare la parola chiave lambda proprio come usi def per definire le normali funzioni.

In questo esempio, useremo la funzione lambda all'interno di map(). La funzione lambda moltiplicherà ogni valore della lista per 10.

Esempio:

my_list = [2,3,4,5,6,7,8,9]
updated_list = map(lambda x: x * 10, my_list)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x000000BD18B11898>
[20, 30, 40, 50, 60, 70, 80, 90]

Utilizzo di più iteratori all'interno della funzione map()

Esempio 1: Passare due iteratori di lista a map()

È possibile inviare più di un iteratore, ad esempio una lista, una tupla, ecc., contemporaneamente alla funzione map().

Ad esempio, se si desidera sommare due liste, è possibile farlo utilizzando la funzione map(). Useremo due liste, my_list1 e my_list2.

Nell'esempio seguente, il primo elemento di my_list1 viene aggiunto al primo elemento di my_list2. La funzione myMapFunc() accetta come input gli elementi di my_list1 e my_list2 e restituisce la somma di entrambi.

Ecco un esempio pratico di somma di due liste date utilizzando la funzione map().

def myMapFunc(list1, list2):
    return list1+list2

my_list1 = [2,3,4,5,6,7,8,9]
my_list2 = [4,8,12,16,20,24,28]

updated_list = map(myMapFunc, my_list1,my_list2)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x0000004D5F751860>
[6, 11, 16, 21, 26, 31, 36]

Esempio 2: Passare una tupla e un iteratore di lista a map()

Nella funzione map() utilizzeremo una lista e un iteratore di tuple. La funzione passata a map(), myMapFunc(), recupererà gli elementi dalla lista e dalla tupla. Gli elementi saranno uniti da un trattino basso (_). Un esempio funzionante è mostrato di seguito:

def myMapFunc(list1, tuple1):
    return list1+"_"+tuple1

my_list = ['a','b', 'b', 'd', 'e']
my_tuple = ('PHP','Java','Python','C++','C')

updated_list = map(myMapFunc, my_list,my_tuple)
print(updated_list)
print(list(updated_list))

Produzione:

<map object at 0x00000059F37BB4E0>
['a_PHP', 'b_Java', 'b_Python', 'd_C++', 'e_C']

DOMANDE FREQUENTI

Entrambe applicano un'operazione a ciascun elemento. Una list comprehension è spesso più leggibile e restituisce direttamente una lista, mentre map() restituisce un oggetto map lazy e può essere più veloce quando si riutilizza una funzione denominata esistente.

No. map() non modifica mai l'iterabile originale. Legge ogni elemento, applica la funzione e produce un nuovo oggetto mappa lazy, lasciando inalterati l'elenco, la tupla o la stringa di origine.

In Python 3. map() è lazy: restituisce un oggetto mappa che calcola i valori solo quando viene iterato. Questo consente di risparmiare memoria con grandi quantità di dati. È possibile racchiuderlo in list() o iterarlo per ottenere i risultati.

La funzione map() trasforma ogni elemento, filter() mantiene solo gli elementi che superano un test e reduce() (della funzione functools) combina tutti gli elementi in un unico valore. Insieme, coprono le operazioni di trasformazione, selezione e aggregazione.

Quando gli iterabili hanno lunghezze diverse, map() si ferma all'iterabile più corto. Gli elementi aggiuntivi negli iterabili più lunghi vengono ignorati, quindi non viene generato alcun errore e il risultato corrisponde all'iterabile più corto.

No. Un oggetto map è un iteratore che si esaurisce dopo un solo passaggio. Una volta che lo si scorre o si chiama il metodo list() su di esso, è vuoto. Se si desidera riutilizzarlo, è necessario convertirlo prima in una lista.

Nell'apprendimento automatico, la funzione map() applica funzioni di preelaborazione ai dataset, come la scalatura dei numeri, la tokenizzazione del testo o la trasformazione delle caratteristiche prima dell'addestramento. Offre un modo pulito e funzionale per eseguire la stessa operazione su molti campioni.

Sì. GitHub Copilot completa automaticamente le chiamate map() con la funzione e gli iterabili corretti, e gli strumenti di intelligenza artificiale agentica possono rifattorizzare i cicli in espressioni map(), quindi eseguire i test per confermare che il comportamento non sia cambiato.

Riassumi questo post con: