Tenho dificuldade em usar a função de mapa em python [duplicado]

Sep 21 2020

Eu sou muito novo em python.
Pesquisei sobre meu problema, mas não consegui obter a resposta esperada.
O que não entendo aqui é como está myfuncsendo chamado, pois não tem parâmetros como myfunc()e como o argumento (n)leva dois argumentos (maçã e banana)?

    def myfunc(n):
        return len(n)

    x = list(map(myfunc,('apple', 'banana')))
    print(x)
   
    output:
    [5,6]

Respostas

5 JacoSolari Sep 21 2020 at 19:19

map(fun, iterable)aplica a funfunção a cada elemento do iterável (por exemplo, uma lista) e retorna cada uma das saídas em uma lista.

A razão pela qual a função myfuncnão tem argumento é que você deve vê-la apenas como um argumento da mapfunção.

Tente pensar em um mapa, por exemplo, assim:

[5, 6] = [myfunc('apple'), myfunc('banana')]

internamente, a mapfunção está fazendo algo como:

def map(myfunc, iterable):
    returns = []
    for i in iterable:
        returns.append(myfunc(i))
    return returns
2 RahulDhankhar Sep 21 2020 at 19:24

Na verdade, o mapa não tem uma função, mas sim a referência a uma função. As referências são passadas sem parênteses e, portanto, você não pode fornecer argumentos manualmente, map faz isso para você. Por exemplo. Se quisermos converter qualquer coisa em inteiro, usaremos

int(50.65)

Mas o mapa leva apenas a referência para a função.

map(int, input().split())