Python Map Lamba Memory

时间:2017-04-14 09:40:06

标签: python dictionary

我有一个对象列表,我想浏览每个对象并更改一个属性。 (1)map lambda和(2)逐个浏览列表对象之间的内存使用是否存在差异?

这是一个简单的示例代码

class F(object):
    def __init__(self):
        self.ID = 0

    def set_ID(self):
        self.ID = 1

number = 1000000
list_objects = [F() for i in xrange(n)]

使用set_ID有两种方式:

单程

map(lambda x: x.set_ID(), list_objects)

另一种方式

for obj in list_objects:
    obj.set_ID()

1 个答案:

答案 0 :(得分:1)

我认为第二种方式更好,map用于将函数应用于iterable的每个项目并返回结果列表,因此:

map(lambda x: x.set_ID(), list_objects)

实际上会生成一个1000000 None的列表,因为你没有将它分配给一个变量,它会被立即丢弃并被垃圾收集,因为这个列表中的所有项都是None,它不会吃太多记忆。由于list_objects的{​​{1}},side effect中的商品状态发生了变化,我认为这不是lambda的合适使用方式。< / p>

第二种方法在整个过程中没有创建任何额外的对象。顺便说一句,它可能只是:

map