【问题标题】:call list of function using list comprehension使用列表推导调用函数列表
【发布时间】:2011-07-24 14:40:20
【问题描述】:

我可以调用函数列表并使用列表推导吗?

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()

有用吗?

【问题讨论】:

标签: python list function list-comprehension


【解决方案1】:
>>> [f() for f in fl]
[1, 2, 3]

绝对:)

【讨论】:

    【解决方案2】:

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

    fobj= F()
    
    for f in fobj.fl:
        f(fobj)
    

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

    【讨论】:

    • 如果我需要将参数传递给函数,我该怎么做?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多