Tenho dificuldade em usar a função de mapa em python [duplicado]
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
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
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())