了解 Lambda
X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)
...我期待它返回:
[1, 2, 4, 8, 16, 32, 64]
...相反,它返回:
[32, 32, 32, 32, 32, 32, 32]
我做错了什么?
X = 5
L = list(map(lambda x: 2**X, range(7)))
print (L)
... I'm expecting this to return:
[1, 2, 4, 8, 16, 32, 64]
...instead, it returns:
[32, 32, 32, 32, 32, 32, 32]
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Python 区分大小写,因此 lambda x: 2**X 的意思是:接受一个参数,将其称为(小写)
x
,完全忽略它,并将 2 返回给全局变量(大写)X
的幂。Python is case-sensitive, so
lambda x: 2**X
means: take an argument, call it (lowercase)x
, ignore it completely, and return 2 to the power of global variable (uppercase)X
.Python 区分大小写。
x
和X
是不同的变量。顺便说一句,构造 L 的更简单方法可能是
或者,如果您想使用 map 和 lambda ,那么
L=map(lambda x: 2**x, range(7))
就足够了。
map
返回一个列表,因此您不必将表达式包装在list(...)
中。Python is case-sensitive.
x
andX
are different variables.By the way, perhaps an easier way to construct
L
would beOr, if you'd like to use
map
andlambda
, thenL=map(lambda x: 2**x, range(7))
suffices.
map
returns a list, so you do not have to wrap the expression in alist(...)
.尝试
L = list(map(lambda x: 2**x, range(7)))
一次。您使用的是X
而不是x
。Try
L = list(map(lambda x: 2**x, range(7)))
once. You were usingX
instead ofx
.你有一个错字。应该是:
You have a typo. It should be: