他们做错了什么,或者我是以错误的方式称呼它?
在:
map(lambda x: x * 3, [1, 2, 3])
输出:
<map object at 0x000001D06DF202E8>
答案 0 :(得分:2)
在python3中,map是一个生成器,因此它返回一个生成器对象而不是一个列表。您可以轻松地将其转换为列表:
list(map(lambda x: x * 3, [1, 2, 3]))
然而,正如朱利安所说,如果你只是想制作一个清单,列表理解是可取的:
[x*3 for x in [1,2,3]]
地图的主要用途是它的懒惰评价。这意味着整个结果集不会立即全部加载到内存中。
例如:
a = map(str, range(100000))
for i in a:
...
在这种情况下,地图会更好,因为你没有像列表组件那样将100,000个字符串加载到内存中。