我有一个对象列表,我想更改所有对象的属性值(相同的值-NewValue)。
在这种函数(lambda)没有返回任何值的情况下,map()
是否比正常for循环更有效?
map ( lambda x: x.attribute = NewValue, li)
VS
for i in li:
i.attribute = NewValue
答案 0 :(得分:5)
您无法在lambda
中分配,但lambda
只是功能的简写,因此您可以:
def set_it(x):
x.attribute = new_value
map(set_it, li)
与明显相比:
for x in li:
x.attribute = new_value
map
与for
循环(无论是列表理解还是完整写出)的一般经验法则是,如果,map
可能会更快,且只有它不会调用用Python编写的函数。因此,在这种情况下,map
会更慢。此外,直接for
循环不会创建然后丢弃不需要的中间列表,因此预计map
会比平常更多地丢失。
答案 1 :(得分:0)
您的方法无效。无法在lambda
构造中分配值。