在 lambda 表达式中使用变量的值
a = [] a.append(lambda x:x**0)
a.append(lambda x:x**1)
a[0](2), a[1](2), a[2](2)... spits out 1, 2, 4, ...
b=[]
for i in range(4)
b.append(lambda x:x**i)
b[0](2), b[1](2), b[2](2)... spits out 8, 8, 8, ...
在 for 循环中,i 作为变量传递给 lambda,因此当我调用它时,使用 i 的最后一个值,而不是像 a[] 那样运行代码。 (即 b[0] 应该使用 x^1,b[1] 应该使用 x^2,...)
我怎样才能告诉 lambda 获取 i 的值而不是变量 i 本身。
a = [] a.append(lambda x:x**0)
a.append(lambda x:x**1)
a[0](2), a[1](2), a[2](2)... spits out 1, 2, 4, ...
b=[]
for i in range(4)
b.append(lambda x:x**i)
b[0](2), b[1](2), b[2](2)... spits out 8, 8, 8, ...
In the for loop, the i is being passed to lambda as a variable, so when I call it, the last value of i is used instead of the code running as it does with a[]. (ie b[0] should use x^1, b[1] should use x^2, ...)
How can I tell lambda to pick up the value of i instead of the variable i itself.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
丑陋,但一种方式:
您可能更喜欢
(所有代码未经测试。)
Ugly, but one way:
You might prefer
(All code untested.)
定义一个工厂
或
Define a factory
or