当前位置: 首页 > 面试题库 >

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

吕承福
2023-03-14
问题内容

如何调用函数列表并使用列表推导?

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

它有效吗?


问题答案:

当然,您可以按照FábioDiniz所说的:)进行操作,但是对于将类方法用作可调用对象时,必须将其作为参数提供给对象:

fobj= F()

for f in fobj.fl:
    f(fobj)

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



 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 如何创建Python Lambda列表(在列表理解/ for循环中)? (8个答案) 使用lambdas的Python列表理解[重复] (4个答案) 列表理解内的Lambda (5个答案) 奇怪的行为:列表理解内的Lambda (7个答案) 2年前关闭。 为什么不是呢?听不懂 那么,由于某种原因,我们所有的lambda中都有?为什么? 问题答案: 这是因

  • 问题内容: 我正在运行Python 3.4.2,我对代码的行为感到困惑。我正在尝试创建递增次数的可调用多项式函数列表: 但是出于某种原因,它这样做: 为什么似乎在列表理解中重复了最后一个lambda表达式的列表? 问题答案: 这个问题是经典的“陷阱”,是在lambda函数被调用之前,不会查找lambda函数中引用的内容。当时的值是结束时绑定到的最后一个值,即。 如果绑定到函数定义中的默认值,则每个

  • 问题内容: 从我的Python控制台 为什么在最后打印出三个都不打印? 问题答案: 列表理解不是当前工作的正确工具。它将始终返回一个 list ,并且给定的结果为,该列表将填充值。当我们对创建值列表不感兴趣时​​,仅对不返回值的函数求值时,简单的循环会更好:

  • 问题内容: 从这个线程开始:如何通过选择随机变量在Python中执行随机事件?\ 我了解到可以将一些函数放入列表中,并通过使用调用其中一个函数来生成随机事件。 我对此很感兴趣,因为在初学者教程中,我正在写一个很小的基于文本的游戏。 但是当我写我认为会给我想要的结果的时候(也就是说,只是调用其中一个函数并打印其字符串: 我得到这个结果: 这三个函数都被调用和打印。 有人可以帮我解决正确的语法吗?谢谢

  • 问题内容: 有没有一种方法可以测试列表(或字典)理解中的函数返回?我想避免这样写: 并改用列表推导。显然,我不想写: 所以? 问题答案: 怎么样 如果您不想保留中间列表,请替换为。有了,整个东西可以变成发电机。

  • 我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误: