2017-11-17 6 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) 

私はこれでをしていた場合、私は、上記のコードの出力は# update list1部には

10 
10 
10 
10 
10 
10 
10 
10   
10 
10 

になりたいですC#が、私は

list1.ForEach(x=>x.foo = 10) 

を行うことができ、私はPythonで私が行うことができます知っている

for x in list1: 
    x.foo = 10 

しかし、私はPythonでC#のやり方と似た方法でやりますか?

+0

確かに 'のための'は最も簡単な方法です。なぜラムダを使いたいのですか? – 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 = [range(10)の_のためのbar(10)] ' – eagle

+0

Cool。私はこれのような何かが可能だろうと思った:) – ApplePie

0

ただ、ここで代替を提供しようとしていますが、前に手更新機能を定義した場合、それはmapを使用することも可能です。これはあなたのニーズに適しているかもしれませんが、私は自分自身を探求したいと思っています:)

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

list1 = list(map(update_bar, list1)) 
関連する問題