2017-11-17 87 views
1

这里是为了说明什么,我试图做一个例子: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 

但是,我怎样才能在Python中以类似于C#中的方式做到这一点?

+0

当然''in in'是最简单的方法。你为什么想要使用lambda? – Blorgbeard

+0

for-loop有什么问题?这基本上是一样的。 – Carcigenicate

+0

Python故意不提供这些工具。使用'for'循环。 – user2357112

回答

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)]) 
+0

在这种情况下,你不需要'i','list1 = [bar(10)for _ in range(10)]' – eagle

+0

很酷。我认为这样会是可能的:) – ApplePie

0

只是想在这里提供一种选择,但它也可以使用map如果你定义了前手的更新功能。这可能会也可能不适合您的需求,但我想自己探索:)

def update_bar(my_bar): 
    my_bar.foo = 10 
    return my_bar 

list1 = list(map(update_bar, list1)) 
相关问题