为了账号安全,请及时绑定邮箱和手机立即绑定

求解释此python的lambda表达式

求解释此python的lambda表达式

慕标5832272 2018-07-03 14:18:24
求教一下表达式各变量是怎么变化的,以及结果,尤其是n怎么变呢?fun = [(lambda n : i + n) for i in range(10)]
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这是 python 中为数不多的“怪事”之一

fun = [(lambda n: i+n) for i in range(10)]
# 等同于fun = [(lambda n: 9+n) for _ in range(10)]

因为 lambda 内的参数 i 在运行时才能确定,不是在声明时确定。

最后 fun 保存了含有 10 个元素的数组,每一个元素都是 lambda 方法,该方法等于下面的 lambda_item 函数

def lambda_item(n):    return 9 + n

如果整个表达式用 python 代码来诠释的话,可以是这样

fun = []for i in range(10):    fun.append((lambda n: 9+n))

另一个让新人迷惑的是

a = [[0]] * 3a[0].append(1)print(a)

打印出

[[0,1], [0,1], [0,1]]


查看完整回答
反对 回复 2018-07-06
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

n是参数,调用的时候才会传进来,现在并没有值

查看完整回答
反对 回复 2018-07-06
  • 2 回答
  • 0 关注
  • 247 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信