Python 用lambda函数实现列表理解

Python 用lambda函数实现列表理解,python,Python,为什么它不是[0,1,2,3]?我不明白。所以,出于某种原因,我们在所有lambda中都有i=3?为什么?这是因为蟒蛇。您可以通过以下方式解决此问题: def multipliers(): return [lambda x: i * x for i in range(4)] print([m(1) for m in multipliers()]) # [3, 3, 3, 3] 这就是你想做的吗 def multipliers(): return [lambda x, i=i

为什么它不是
[0,1,2,3]
?我不明白。所以,出于某种原因,我们在所有lambda中都有
i=3
?为什么?这是因为蟒蛇。您可以通过以下方式解决此问题:

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


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

这就是你想做的吗

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

如果我们进行简化,为什么不打印([0,1,2,3])?OP问他们的代码有什么问题。@EugeneSh。为什么停在那里<代码>打印(“[0,1,2,3]”)更容易使用资源
def multipliers(x):
    return [i * x for i in range(4)]

print(multipliers(1)) 

>> [0, 1, 2, 3]