2011-07-15 18 views
7

誰かが次のPythonコード(python 3.2)で何が起こっているのか理解できますか?私はここで本当に無知だ。python - 同じ命令、異なる結果

import sys 
u = sys.stdin.readline() 
    # try entering the string "1 2 3" 
r = map(lambda t: int(t.strip()),u.split()) 
print(sum(r)) # prints 6 
print(sum(r)) # prints 0 ? 

ありがとうございます。

答えて

14

map() Python 3.xでは、リストではなくイテレータを返します。 sum()に渡すと、初めて消費され、2回目は何も残されません。

+2

この答えに追加するには:結果をリストとして保持するには、代わりに 'r = list(map(...))'を実行します。 – kindall

+2

@kindall実際には、リストの理解はおそらくもっときれいになるでしょう –

+0

これは確かです。もちろん、最初に使用するときれいだったでしょう。 :-) – kindall

関連する問題