我应该在使用之前定义地图还是不定义地图?

时间:2018-04-19 01:16:41

标签: python list dictionary sequence

他们做错了什么,或者我是以错误的方式称呼它?

在:

map(lambda x: x * 3, [1, 2, 3])

输出:

<map object at 0x000001D06DF202E8>

1 个答案:

答案 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个字符串加载到内存中。