2012-04-11 14 views
5

Estoy tratando de convertir los valores de una lista usando la función map pero estoy obteniendo un resultado extraño.Problema con el mapa()

s = input("input some numbers: ") 
i = map(int, s.split()) 
print(i) 

da:

input some numbers: 4 58 6 
<map object at 0x00000000031AE7B8> 

¿por qué no vuelve [ '4', '58', '6']?

+0

¿Has probado con la impresión (str (i))? – Soader03

+0

Funciona para mí como se esperaba, ¿puedes darnos un contexto? ¿Versión de Python? ¿Estás usando 2.x o 3.x? – KurzedMetal

+0

estoy usando python 3.2.2, no hay contexto en este punto. – Sergei

Respuesta

9

Está utilizando python 3, que devuelve generadores en lugar de listas.

Llame a list(x) sobre la variable después de asignarle el generador de mapas.

+4

Vale la pena señalar que también podría usar una lista de comprensión como alternativa: '' [int (x) para x en s.split()] ''. Esto es agradable y legible, aunque en este (simple) caso, no diría que el mapa es ilegible. –

2

Necesita hacer list(i) para obtener ['4','58','6'] como map en python 3 devuelve un generador en lugar de una lista. También, como Lattyware señaló en el comentario de la primera respuesta que mejor hace esto:

i = [int(x) for x in s.split()] 
+0

¿Por qué? [La respuesta de Jamylak] (http://stackoverflow.com/a/10106900/722121) explica mejor. –

+1

Lo publicó antes que yo y lo explicó. Entonces no lo hice: p – mshsayem

Cuestiones relacionadas