Python - 更新列表中元素的简单方法是什么?

时间:2017-11-17 22:46:22

标签: python

这是一个例子来说明我想要做的事情:

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中做到这一点?

2 个答案:

答案 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))