这是一个例子来说明我想要做的事情:
class bar:
pass
list1 = []
for i in range(10):
bar1 = bar()
bar1.foo = 0
list1.append(bar1)
# update list1
for i in range(10):
print(list1[i].foo)
我希望上面代码的输出为
10
10
10
10
10
10
10
10
10
10
在# update list1
部分,如果我在C#中这样做,我可以做
list1.ForEach(x=>x.foo = 10)
我知道在Python中我能做到
for x in list1:
x.foo = 10
但是我怎么能用类似于C#的方式在Python中做到这一点?
答案 0 :(得分:2)
将参数添加到初始化;理解中使用它。
class bar:
def __init__(self, foo):
self.foo = foo
list1 = [bar(10) for i in range(10)]
进一步更新的示例:
print([x for x in map(lambda obj:obj.foo + 3, list1)])
答案 1 :(得分:0)
尝试在此处提供替代方案,但如果您事先定义更新功能,也可以使用map。这可能适合您的需求,也可能不适合您,但我想自己探讨一下:)
def update_bar(my_bar):
my_bar.foo = 10
return my_bar
list1 = list(map(update_bar, list1))