了解Lambda

3zz*_*zzy 0 python lambda map

X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)
Run Code Online (Sandbox Code Playgroud)

......我希望这会回来:

[1, 2, 4, 8, 16, 32, 64]
Run Code Online (Sandbox Code Playgroud)

...相反,它返回:

[32, 32, 32, 32, 32, 32, 32]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Ale*_*lli 10

Python区分大小写,因此lambda x: 2**X意味着:接受一个参数,调用它(小写)x,完全忽略它,并将2返回到全局变量(大写)的幂X.

  • 啊!证明我是一个真正的初学者!:P谢谢! (2认同)