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

Jer*_*Gao 28 python list-comprehension function list

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

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

fl = [func1,func2,func3]

fl[0]()
fl[1]()
fl[2]()
Run Code Online (Sandbox Code Playgroud)

我知道我能做到

for f in fl:
   f()
Run Code Online (Sandbox Code Playgroud)

但我可以在下面做吗?

[f() for f in fl]
Run Code Online (Sandbox Code Playgroud)

例如,如果我的职能列表在课堂上,那么对于那些善良的人来说是另一个问题

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()
Run Code Online (Sandbox Code Playgroud)

它有用吗?

Mik*_*wis 21

>>> [f() for f in fl]
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

绝对:)


P2b*_*2bM 15

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

fobj= F()

for f in fobj.fl:
    f(fobj)
Run Code Online (Sandbox Code Playgroud)

该对象必须作为可调参数的参数给出,因为当您查看该方法def funcX(self):的定义时,该方法需要一个参数" self "