2012-04-11 24 views
5

Ben map işlevini kullanarak bir liste değerlerini dönüştürmek çalışıyorum ama garip bir sonuç alıyorum.Sorun()

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

verir:

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

neden dönmez [ '4', '58', '6']?

+0

Eğer baskı (str (i)) ile denediniz mi? – Soader03

+0

Beklediğim gibi, bana biraz bağlam sağlayabilir misiniz? Python sürümü? 2.x veya 3.x kullanıyor musunuz? – KurzedMetal

+0

python 3.2.2 kullanıyorum, bu noktada bağlam yok. – Sergei

cevap

9

Listeler yerine jeneratörler döndüren python 3 kullanıyorsunuz. değişkeni

Çağrı list(x) bunu haritası jeneratör atadıktan sonra.

+4

Aynı zamanda bir liste kavrayışını alternatif olarak kullanabileceğinizi de unutmayın - '' [s.split()] 'x için x (int (x)). Bu (basit) durumda, haritanın okunamaz olduğunu söyleyemem, hoş ve okunabilir. –

2

['4','58','6']map python 3'e sahip olmak için list(i) yapmalısınız, bir liste yerine bir jeneratör döndürür. Lattyware ilk cevabın yorumunda belirttiği gibi Ayrıca, daha iyi bunu:

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

Neden? [jamylak'ın cevabı] (http://stackoverflow.com/a/10106900/722121) daha iyi açıklıyor. –

+1

Benden önce postaladı ve açıkladı. Yani yapmadım: p – mshsayem