了解 Lambda

发布于 2024-08-15 17:19:08 字数 241 浏览 4 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深陷 2024-08-22 17:19:08

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.

属性 2024-08-22 17:19:08

Python 区分大小写。 xX 是不同的变量。

顺便说一句,构造 L 的更简单方法可能是

L=[2**x for x in range(7)]

或者,如果您想使用 map 和 lambda ,那么

L=map(lambda x: 2**x, range(7))

就足够了。 map 返回一个列表,因此您不必将表达式包装在 list(...) 中。

Python is case-sensitive. x and X are different variables.

By the way, perhaps an easier way to construct L would be

L=[2**x for x in range(7)]

Or, if you'd like to use map and lambda, then

L=map(lambda x: 2**x, range(7))

suffices. map returns a list, so you do not have to wrap the expression in a list(...).

如梦 2024-08-22 17:19:08

尝试 L = list(map(lambda x: 2**x, range(7))) 一次。您使用的是 X 而不是 x

Try L = list(map(lambda x: 2**x, range(7))) once. You were using X instead of x.

缪败 2024-08-22 17:19:08

你有一个错字。应该是:

# Upper case X refers to 5
list(map(lambda x: 2**x, range(7)))

You have a typo. It should be:

# Upper case X refers to 5
list(map(lambda x: 2**x, range(7)))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文