python - 相同的指令,不同的结果

Lam*_* Mu 7 python python-3.x

有人可以帮我理解下面的Python代码(python 3.2)中发生了什么吗?我在这里真的很无能为力.

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 ?
Run Code Online (Sandbox Code Playgroud)

谢谢.

Ign*_*ams 14

map()在Python 3.x中返回一个迭代器,而不是一个列表.通过sum()它第一次消耗它,第二次没有留下任何东西.

  • 要添加到这个答案:如果你想将结果保持为列表,请改为`r = list(map(...))`. (2认同)
  • @kindall实际上,列表理解可能会更清晰 (2认同)