这是一个创建于 3082 天前的主题,其中的信息可能已经有所发展或是发生改变。
请问如下代码为何不会输出 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>
3 条回复 • 2017-07-30 12:39:04 +08:00
 |
|
1
zonyitoo 2017-07-30 12:24:55 +08:00
你不对 map 执行,它只是一个 map object,lazy evaluation
|
 |
|
2
est 2017-07-30 12:27:45 +08:00
py3 吧。
|
 |
|
3
wisej 2017-07-30 12:39:04 +08:00
py3 不像 py2 会直接返回 list 了,而是 iterator。 想得到输出的话,可以 list(t)
|