2014-05-21 78 views
2

我有簡單的類像這樣迭代Python列表對象,並調用每個對象的方法

class MyClass(): 
    def test(self): 
     print "Calling Test" 

然後創建一個列表:

lobj=[MyClass() for i in range (100)] 

現在我想遍歷每個對象lobj並調用它方法test()。 我知道我可以使用for循環。但是,我不知道是否有其他方式(只是爲了避免列表相對較大的for循環)?例如

lobj[:].test() 
+0

你想捕捉'測試結果'功能? – thefourtheye

+1

爲什麼列表大小是否使用'for'循環?任何在每個對象上調用方法的東西都會做同樣的事情。 – Amber

回答

5

...我想知道是否有其他方法(只是爲了避免列表相對較大的for循環)?

。您可以使用內置功能map()和一個lambda函數。如果你想只需要調用每個元素的方法,這樣做:

map(lambda x:x.test(), lobj) 

如果你想存儲在列表中的結果:

v = map(lambda x:x.test(), lobj) 
+0

謝謝!這就是我要找的。 – user3579004

3

你能做的最好的是:

[i.test() for i in lobj] 

這將調用方法,但再任何地方,所以列表被丟棄不存儲結果是做呼籲所有方法之後實例。

+0

謝謝。我也可以這樣做。 我想投票你的答案,但我沒有足夠的代表。 – user3579004

相關問題