2012-04-11 19 views
5

Sto provando a convertire i valori di una lista usando la funzione map ma sto ottenendo uno strano risultato.Problemi con la mappa()

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

dà:

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

perché lo fa non restituisce [ '4', '58', '6']?

+0

Hai provato con stampa (str (i))? – Soader03

+0

Funziona per me come previsto, puoi darci un po 'di contesto? Versione Python? Stai usando 2.xo 3.x? – KurzedMetal

+0

sto usando python 3.2.2, non c'è alcun contesto a questo punto. – Sergei

risposta

9

Si sta utilizzando python 3 che restituisce i generatori anziché le liste.

Chiama il list(x) sulla variabile dopo averlo assegnato al generatore di mappe.

+4

Vale la pena notare che potresti anche usare una list comprehension come alternativa - '' [int (x) per x in s.split()] ''. Questo è bello e leggibile, anche se in questo (semplice) caso, non direi che la mappa è illeggibile. –

2

È necessario eseguire list(i) per ottenere ['4','58','6'] come map in python 3 restituisce un generatore anziché un elenco. Inoltre, come ha sottolineato Lattyware nel commento della prima risposta è meglio fare questo:

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

Perché? [la risposta di jamylak] (http://stackoverflow.com/a/10106900/722121) spiega meglio. –

+1

Ha pubblicato prima di me e lo ha spiegato. Quindi non l'ho fatto: p – mshsayem