使用列表理解的函数调用列表

时间:2011-03-28 15:46:40

标签: python list function list-comprehension

我可以调用函数列表并使用列表理解吗?

def func1():return 1
def func2():return 2
def func3():return 3

fl = [func1,func2,func3]

fl[0]()
fl[1]()
fl[2]()

我知道我能做到

for f in fl:
   f()

但我可以在下面做吗?

[f() for f in fl]

如果我的功能列表在课堂上,那么那些善良的人的另一个问题,例如

class F:

    def __init__(self):
        self.a, self.b, self.c = 0,0,0

    def func1(self):
        self.a += 1

    def func2(self):
        self.b += 1

    def func3(self):
        self.c += 1

    fl = [func1,func2,func3]

fobj= F()

for f in fobj.fl:
    f()

有效吗?

4 个答案:

答案 0 :(得分:21)

>>> [f() for f in fl]
[1, 2, 3]

绝对:)

答案 1 :(得分:15)

当然你可以像FábioDiniz所说:), 但是,对于用作可调用对象的类方法,必须将对象作为参数提供:

fobj= F()

for f in fobj.fl:
    f(fobj)

必须将对象作为参数提供给callable,因为当您查看方法def funcX(self):的定义时,该方法需要一个参数“ self

答案 2 :(得分:1)

是的,你可以。结果列表将保存函数的返回值。

答案 3 :(得分:0)

是的,您可以 - 按预期调用函数。