Ho difficoltà a utilizzare la funzione map in Python [duplicato]
Sono molto nuovo in Python.
Ho studiato il mio problema ma non sono riuscito a ottenere la risposta esclusa.
Quello che non capisco qui è come viene myfuncchiamato in quanto non ha parametri come myfunc()e in che modo l'argomento (n)prende due argomenti (mela e banana)?
def myfunc(n):
return len(n)
x = list(map(myfunc,('apple', 'banana')))
print(x)
output:
[5,6]
Risposte
map(fun, iterable)applica la funfunzione a ogni elemento nell'iterabile (ad esempio una lista) e restituisce ciascuno degli output in una lista.
Il motivo per cui la funzione myfuncnon ha argomenti è che dovresti vederla solo come un argomento della mapfunzione.
Prova a pensare alla mappa, per il tuo esempio, in questo modo:
[5, 6] = [myfunc('apple'), myfunc('banana')]
internamente, la mapfunzione sta facendo qualcosa come:
def map(myfunc, iterable):
returns = []
for i in iterable:
returns.append(myfunc(i))
return returns
La mappa in realtà non accetta una funzione, prende il riferimento a una funzione. I riferimenti vengono passati senza parentesi e quindi non puoi fornire argomenti manualmente, map lo fa per te. Per es. Se vogliamo convertire qualsiasi cosa in intero, useremo
int(50.65)
Ma map accetta solo il riferimento alla funzione.
map(int, input().split())