具有lambda函数的列表理解

发布于 2021-01-29 15:05:35

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

如何创建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中都有?为什么?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看