在python怪异的结果中循环中的Lambda表达式

时间:2015-04-28 06:04:48

标签: python lambda

我还没有使用很多功能性编程核心功能,例如lambdamap,但我最近发现它很有用。我正在使用以下lambda函数,但它没有产生所需的结果。

def multiplier():
    return [lambda x:x**i for i in range(10)]

print [m(2) for m in multiplier()] #output is [512, 512, 512, 512, 512, 512, 512, 512, 512, 512]

为什么我会出现这种行为?在lambda中,i关闭列表的最后一个值,即9,因此当我传递参数m(2)时.2 ** 9 = 512被打印。

编辑:
我的确切问题是根据我的理解,最终输出应该是x ** i;我的范围从0到9,在我的例子中x = 2。那么为什么在所有10个循环中只考虑i = 9?

任何人都可以解释为什么会发生这种情况?

0 个答案:

没有答案