猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
有人可以一步步解释一下这个过程吗
def m():
return[lambda x:x*i for i in range(4)]
print([m(9) for m in m()])
我要一步步执行。
慕斯709654
浏览 72
回答 1
1回答
幕布斯6054654
函数m返回 4 个函数的列表lambda。这些函数中的每一个都采用一个参数 ,x并返回一个值,该值是通过将该值乘以 来计算的i。其目的可能是分别为这 4 个 lambda 函数中的每一个i采用连续值 0、1、2 和 3(由函数生成)。range但是,这些 lambda 函数不会i在创建时进行复制,而是会i在调用时使用当前的值。当函数m返回 4 个 lambda 函数的列表时,具有来自函数i的最终值。因此,所有 4 个 lambda 函数都是相同的,并将其参数乘以 3 并返回该乘积作为结果。3range[m(9) for m in m()]是一个列表推导式,它将创建一个列表,其中每个元素都是通过第一次调用而连续创建的,对于返回的列表中的m()每个值,正如我们所见,它是一个 lambda 函数,它将其参数乘以 3,并使用参数调用该函数m9 并获取结果 (27) 并将其附加到正在创建的新列表中。因此,我们最终得到一个包含 4 个元素的列表,所有元素都是 27, [27, 27, 27, 27],然后将其打印出来。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Python
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续