2012-04-11 9 views
5

map関数を使用してリストの値を変換しようとしていますが、奇妙な結果が出ています。map()に問題があります

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

ができます:

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

なぜそれが戻らない[ '4'、 '58'、 '6']?

+0

あなたは、印刷(STR(i))をしてみましたか? – Soader03

+0

期待通りに動作しますか、いくつかの文脈を教えてください。 Pythonのバージョン? 2.xまたは3.xを使用していますか? – KurzedMetal

+0

私はpython 3.2.2を使用していますが、この時点ではコンテキストはありません。 – Sergei

答えて

9

リストの代わりにジェネレータを返すpython 3を使用しています。

マップジェネレータを割り当てた後に変数のlist(x)を呼び出します。

+4

代わりに、リスト内包を使うこともできることは注目に値する - '' [int(x)for x in s.split()] ''。これは素晴らしく読みやすいですが、この(単純な)ケースでは、地図が読めないとは言いません。 –

2

list(i)を入力する必要があります。['4','58','6']mapとすると、リストの代わりにジェネレータが返されます。 Lattywareは、最初の答えのコメントで指摘したように また、あなたはより良い次の操作を行います。

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

なぜですか? [ジャミラクの答え](http://stackoverflow.com/a/10106900/722121)より良い説明します。 –

+1

彼は私の前に投稿し、それを説明した。だから私はしなかった:p – mshsayem