Python - Dudas funcion map()

 
Vista:
Imágen de perfil de Alejandro

Dudas funcion map()

Publicado por Alejandro (7 intervenciones) el 12/07/2022 06:59:03
Hola amigos hice este video para que me entiendan mejor sobre la duda que tengo es sobre la función map() :D


Resumidamente porque no puedo visualizar directamente con un print la variable que iguale al map por ejemplo:
variable = map(funcion, lista)
print(variable)

Y porque también en el ejercicio al utilizar el for para visualizar los elementos de -variable- deja de arrojarme el diccionario que me arrojaba cuando no utilizaba el for
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Dudas funcion map()

Publicado por tincopasan (1082 intervenciones) el 12/07/2022 12:20:37
Hola:
la verdad es que este tema tiene cientos de explicaciones en la red, así que vamos por una más
#-*- coding: utf -8 -*-
1
2
3
def función(sentence):
    words = sentence.split()
    lengths = map(len,words)

1) a map se le pasan dos valores: una función y uno o varios iterables
2) iterable es una forma de decirle a lo que puede tener más de un elemento (cadenas,listas,tuplas,diccionarios)

1
print(lengths)

En este caso solo te muestra lo que obtuviste y como se sabe en python todos son objetos

<map object at 0x02CAC280>

claramente es un objeto de tipo map que es un iterador y está en la posición de memoria 0xetc. que en cada ocasión va a cambiar
por lo cual se puede convertir a una variable de tipo iterador por ejemplo una lista o cualquier otra y ocupará otra parte de la memoria

1
otro_lengths = list(map(len,words))

convertido en lista en vez de diccionario que es lo que devuelve el return

1
print(otro_lengths)
ya es una lista
1
2
for i in lengths:
        print (i)
estás recorriendo el iterador y todavía no es nada más que eso , quiere decir que llegaste al final del mismo por lo tanto ahora lengths está vacío.

podrías volver a crearlo
1
lengths = map(len,words)

o podrías haber recorrido la lista ya creada:
1
2
for i in otro_lengths:
        print(i)

ahora
1
return dict(zip(words,otro_lengths))

ya funcionaría bien como diccionario

1
2
3
return dict(zip(words,lengths))
 
print(función('Hola amigos del foro'))

en tu caso no funciona porque recién en el return lo convertiste a diccionario

para terminar si bien se puede usar map, está bastante despreciado es mejor listas o diccionarios por comprensión
como dejaste un diccionario haré lo mismo

1
2
3
4
def contador(cadena):
    return {palabra:len(palabra) for palabra in cadena.split() }
 
print(contador('Hola amigos del foro'))

No sé una forma más simple de explicar sobre map, comprensión de listas o diccionarios es otro tema.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alejandro

Dudas funcion map()

Publicado por Alejandro (7 intervenciones) el 12/07/2022 20:23:14
Agradezco la explicación amigo, me sirvió mucho
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar