2014-05-21 46 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

相关问题