Funzione map per iterare oggetti in Python
Supponiamo di avere una funzione square per
elevare i numeri al quadrato. E c'è una lista,
i cui elementi devono essere applicati a
questa funzione:
def square(num):
return num ** 2
lst = [2, 3, 6, 8, 15]
In Python per risolvere questo problema, si può
usare una funzione speciale map.
Accetta come parametri una funzione e una lista,
ai cui elementi deve essere applicata.
Usiamo map per risolvere
l'esempio:
res = map(square, lst)
print(res)
Ogni lista, come qualsiasi oggetto complesso, occupa molto spazio nella memoria di sistema di Python. Pertanto, per risparmiare risorse, dopo l'esecuzione del codice, non verrà restituita una nuova lista, ma un speciale oggetto iterabile map:
<map object at 0x000001F16674BA00>
Iteriamolo con un ciclo:
for el in res:
print(el)
Come risultato, verranno stampati tutti gli elementi della nuova lista:
4
9
36
64
225
Per creare una nuova lista dall'oggetto map,
è necessario applicare ad esso la funzione list:
lst = [2, 3, 6, 8, 15]
res = map(square, lst)
Come risultato, verrà stampata la seguente lista:
[4, 9, 36, 64, 225]
Inoltre, quando si lavora con la funzione map,
nel primo parametro è possibile specificare una funzione lambda.
Riscriviamo l'esempio precedente
usando una funzione lambda:
res = map(lambda num: num ** 2, lst, lst)
print(list(res))
Riscrivi il seguente codice utilizzando una funzione lambda:
def func(num):
return num + 1
lst = [1, 2, 3, 4, 5]
res = map(func, lst)
print(list(res))
Riscrivi il seguente codice utilizzando una funzione lambda:
def func(txt):
return txt[::-1]
lst = ['123', '456', '789']
res = map(func, lst)
print(list(res))