紧凑的方法将类成员调用到对象列表的所有元素

时间:2013-04-01 06:32:33

标签: python

问题:如何为此循环定义紧凑结构:

for V in L:
   V.f()

其中:

  • L:是给定类型A
  • 的对象列表
  • f()A
  • 的方法

例如:

class A:
    def f(self):
        print "foobar... "

# Construct the list
a1 = A()
a2 = A()
a3 = A()
L = [a1, a2, a3]

for V in L:
    V.f()

我找到了一种使用map调用和lambda函数的方法:

 map(lambda x: x.f(), L)

但是,此调用返回一个列表,我不希望构建它。

有更优雅的方式吗?

2 个答案:

答案 0 :(得分:1)

执行此操作的正确方法是使用您提到的循环。任何其他解决方案在语义上都是不正确的。

(你所说的是“对于L中的每个项目,做f。”也就是说,你是必须的。一个for循环就是这么说的。)

答案 1 :(得分:0)

如果您不希望列表作为返回值,那么for循环是最好的方法。

for V in L:
    V.f()

或者,您可以使用python的最佳功能之一,列表推导,而不是将其分配给任何变量。列表推导通常更快。

[ V.f() for V in L]