Ho difficoltà a utilizzare la funzione map in Python [duplicato]

Sep 21 2020

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

5 JacoSolari Sep 21 2020 at 19:19

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
2 RahulDhankhar Sep 21 2020 at 19:24

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())