为什么 python3 里的 map 对象读取时需要先 list,这样设计有什么好处

2015-10-04 17:56:40 +08:00
 xyok
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
`a= [1,2,2,3]`
`m = map(lambda x:x**2,a)`
`print m`
`>>>[1, 4, 4, 9]`

-------

Python 3.5.0 (default, Oct 3 2015, 07:03:10)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
`a= [1,2,2,3]
m = map(lambda x:x**2,a)
print(m)
``>>><map object at 0x7f25b7ebce10>
list(m)
``>>>[1, 4, 4, 9]`
2402 次点击
所在节点    Python
4 条回复
SErHo
2015-10-04 18:03:04 +08:00
range 和 xrange 的区别。
raptor
2015-10-04 18:28:52 +08:00
py3 的 map 返回的是迭代器。
myjiayan
2015-10-04 18:29:31 +08:00
生成器,节省内存
WhiteSaber
2015-10-04 18:37:09 +08:00
@myjiayan 感谢你的解答,生成器真是一个好东西

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

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

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

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

© 2021 V2EX