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

具有lambda函数的列表理解

权弘新
2023-03-14
问题内容

这个问题已经在这里有了答案

如何创建Python Lambda列表(在列表理解/ for循环中)? (8个答案)

使用lambdas的Python列表理解[重复] (4个答案)

列表理解内的Lambda (5个答案)

奇怪的行为:列表理解内的Lambda (7个答案)

2年前关闭。

def multipliers():
    return [lambda x: i * x for i in range(4)]


print([m(1) for m in multipliers()]) # [3, 3, 3, 3]

为什么不是[0, 1, 2, 3]呢?听不懂 那么,由于某种原因,我们i = 3所有的lambda中都有?为什么?


问题答案:

这是因为Python的后期绑定关闭。您可以通过以下方式解决此问题:

def multipliers():
    return [lambda x, i=i : i * x for i in range(4)]


 类似资料:
  • 问题内容: 我试图通过使用Runnable接口包装我需要的任何函数来简单地计时一个函数。 那么我可以简单地执行以下操作: 但是,如果我有一个带有参数的函数,则必须将其修改为: 我遇到的问题是’someParameter’必须是final或有效的final。有没有解决此问题的方法?我见过forEach的循环,但是我需要将此参数从1、10、100->指数化直到满足条件。代码是这样的: 我要求funct

  • 问题内容: 我了解简单列表理解的工作原理,例如: 而且我也了解嵌套列表的综合工作原理: 所以,当我尝试这样做 我期望这样: 但是我得到了: 所以我有更好的方法解决问题,这给了我我想要的 但是我不明白在第一个代码中返回9个元素 问题答案: 它有9个数字的原因是因为python对待 类似于 即,它是一个嵌套循环

  • 问题内容: 如何调用函数列表并使用列表推导? 我知道我能做 但是我可以在下面做吗? 如果我的函数列表在课堂上,那么对于那些善良的人们来说,还有一个问题 它有效吗? 问题答案: 当然,您可以按照FábioDiniz所说的:)进行操作,但是对于将类方法用作可调用对象时,必须将其作为参数提供给对象: 该对象必须作为可调用对象的参数提供,因为当您查看方法的定义时,该方法需要一个参数“ self ”