[英]Python Map Lamba Memory
我有一个对象列表,我想遍历每个对象并更改属性。 (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()
我认为第二种方法更好, map
用于将函数应用于iterable
每个项目并返回结果列表,因此:
map(lambda x: x.set_ID(), list_objects)
实际上会生成一个1000000 None
的列表,因为您没有将其分配给一个变量,它将被立即丢弃并被垃圾回收,因为此列表中的所有项目均为None
,因此不会占用太多内存。 由于lambda
的side effect
, list_objects
中项目的状态发生了变化,我认为这不是使用map
的合适方法。
第二种第二种方法在整个过程中都没有创建任何额外的对象。 顺便说一句,它可能只是:
for obj in list_objects:
obj.set_ID()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.