Python 不需要返回值时映射

Python 不需要返回值时映射,python,Python,我有一个对象列表,我想更改所有对象属性的值(为相同的值NewValue) 在函数(lambda)不返回任何值的情况下,map()是否比普通for循环更有效 map ( lambda x: x.attribute = NewValue, li) vs 你的方法行不通。不能在lambda构造中赋值。不能在lambda中赋值,但lambda只是函数的简写形式,因此您可以: def set_it(x): x.attribute = new_value map(set_it, li) 与显而易

我有一个对象列表,我想更改所有对象属性的值(为相同的值NewValue)

在函数(lambda)不返回任何值的情况下,
map()
是否比普通for循环更有效

map ( lambda x: x.attribute = NewValue, li)
vs


你的方法行不通。不能在
lambda
构造中赋值。

不能在
lambda
中赋值,但
lambda
只是函数的简写形式,因此您可以:

def set_it(x):
    x.attribute = new_value
map(set_it, li)
与显而易见的情况相比:

for x in li:
    x.attribute = new_value

map
循环(无论是列表理解还是完整写出)的
相比,一般的经验法则是
map
如果不调用用Python编写的函数,可能会更快。因此,在这种情况下,
map
将变慢。另外,直接的
for
循环不会创建然后扔掉一个不需要的中间列表,因此希望
map
比平常损失更多。

非常有启发性。另外,如果您想知道一种方法是否比另一种方法更有效,请使用。谢谢..答案的第二部分是我想要的,尽管我在问题中的示例非常糟糕:DOh,我不同意:
lambda x:setattr(x,'attribute',NewValue)
for x in li:
    x.attribute = new_value