La funzione map() di Python viene utilizzata per applicare una funzione a tutti gli elementi di un iterabile specificato e restituire un oggetto mappa. L’oggetto mappa di Python è un iteratore, quindi possiamo iterare sui suoi elementi. Possiamo anche convertire l’oggetto mappa in oggetti di sequenza come lista, tupla ecc. utilizzando le loro funzioni di fabbrica.
Funzione map() di Python
La sintassi della funzione map() di Python è:
map(function, iterable, ...)
Possiamo passare più argomenti iterabili alla funzione map(), in tal caso, la funzione specificata deve avere tanti argomenti. La funzione verrà applicata a questi elementi iterabili in parallelo. Con più argomenti iterabili, l’iteratore map si interrompe quando l’iterabile più corto è esaurito.
Esempio di map() di Python
Scriviamo una funzione da utilizzare con la funzione map().
def to_upper_case(s):
return str(s).upper()
Si tratta di una semplice funzione che restituisce la rappresentazione della stringa in maiuscolo dell’oggetto di input. Sto anche definendo una funzione di utilità per stampare gli elementi dell’iteratore. La funzione stamperà gli elementi dell’iteratore con spazi vuoti e verrà riutilizzata in tutti gli snippet di codice.
def print_iterator(it):
for x in it:
print(x, end=' ')
print('') # for new line
Guardiamo un esempio della funzione map() con diversi tipi di iterabili.
Python map() con stringa
# map() con stringa
map_iterator = map(to_upper_case, 'abc')
print(type(map_iterator))
print_iterator(map_iterator)
Output:
<class 'map'>
A B C
Python map() con tupla
# map() con tupla
map_iterator = map(to_upper_case, (1, 'a', 'abc'))
print_iterator(map_iterator)
Output:
1 A ABC
Python map() con lista
map_iterator = map(to_upper_case, ['x', 'a', 'abc'])
print_iterator(map_iterator)
Output:
X A ABC
Conversione di map in lista, tupla, insieme
Dato che l’oggetto map è un iteratore, possiamo passarlo come argomento ai metodi factory per creare una lista, tupla, insieme, ecc.
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_list = list(map_iterator)
print(my_list)
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_set = set(map_iterator)
print(my_set)
map_iterator = map(to_upper_case, ['a', 'b', 'c'])
my_tuple = tuple(map_iterator)
print(my_tuple)
Output:
['A', 'B', 'C']
{'C', 'B', 'A'}
('A', 'B', 'C')
Python map() con lambda
Possiamo utilizzare le funzioni lambda con map() se non vogliamo riutilizzarle. Questo è utile quando la nostra funzione è piccola e non vogliamo definire una nuova funzione.
list_numbers = [1, 2, 3, 4]
map_iterator = map(lambda x: x * 2, list_numbers)
print_iterator(map_iterator)
Output:
2 4 6 8
Python map() con argomenti multipli
Guardiamo un esempio di utilizzo della funzione map() con argomenti multipli.
# map() con argomenti multipli
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)
Output: 5 12 21 32
Notiamo che la nostra funzione ha due argomenti. L’iteratore di output della mappa è il risultato dell’applicazione di questa funzione ai due elementi iterabili in parallelo. Vediamo cosa succede quando gli iterabili hanno dimensioni diverse.
# map() con argomenti multipli di dimensioni diverse
list_numbers = [1, 2, 3, 4]
tuple_numbers = (5, 6, 7, 8, 9, 10)
map_iterator = map(lambda x, y: x * y, list_numbers, tuple_numbers)
print_iterator(map_iterator)
map_iterator = map(lambda x, y: x * y, tuple_numbers, list_numbers)
print_iterator(map_iterator)
Output:
5 12 21 32
5 12 21 32
Quindi, quando gli argomenti hanno dimensioni diverse, la funzione di mappatura viene applicata agli elementi fino a quando uno di essi non è esaurito.
Python map() con funzione None
Vediamo cosa succede quando passiamo la funzione come None.
map_iterator = map(None, 'abc')
print(map_iterator)
for x in map_iterator:
print(x)
Output:
Traceback (most recent call last):
File "/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_map_example.py", line 3, in <module>
for x in map_iterator:
TypeError: 'NoneType' object is not callable
Puoi controllare lo script completo di Python e altri esempi di Python dal nostro Repository GitHub.
Riferimento: Documentazione Ufficiale
Source:
https://www.digitalocean.com/community/tutorials/python-map-function