请教一个关于 sys.stdout.write 的问题

2017-07-30 12:21:32 +08:00
 saximi
请问如下代码为何不会输出 a、b、c,比如对于传入的第一个参数,实际上不是执行了 map(sys.stdout.write,'a\n')从而应该输出'a'么?

import sys
s=lambda x:map(sys.stdout.write,x)
t=s(['a\n','b\n','c\n'])
print(t)

实际输出如下:
<map object at 0x01C2B210>
1841 次点击
所在节点    Python
3 条回复
zonyitoo
2017-07-30 12:24:55 +08:00
你不对 map 执行,它只是一个 map object,lazy evaluation
est
2017-07-30 12:27:45 +08:00
py3 吧。
wisej
2017-07-30 12:39:04 +08:00
py3 不像 py2 会直接返回 list 了,而是 iterator。
想得到输出的话,可以 list(t)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378995

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX