python中lambda x:lambda :x**2作何理解?

 我来答
求而欲知
推荐于2018-02-12 · TA获得超过138个赞
知道答主
回答量:55
采纳率:0%
帮助的人:11.8万
展开全部
我也遇到这个问题,仔细研究了一下,现在说一下。
这是一个lambda表达式,返回值是一个lambda函数。你应该这么读:
lambda x: (lambda: x**2),
这是两个lambda函数嵌套,第一个lambda输入x,返回lambda: x**2,
第二个lambda没有输入,返回x**2,其中返回式的x是源自于第二个lambda表达式的闭包(可以理解为第一个lambda表达式的函数空间)。
如果写成函数式的方法,可能更好理解。
def lambda1(x):
def lambda2():
return x**2
return lambda2
这种嵌套的函数常用于装饰器,或者函数式编程。我遇到的情况是为了保存闭包。
很尴尬的萨嘎bC
2016-07-25 · TA获得超过944个赞
知道大有可为答主
回答量:881
采纳率:0%
帮助的人:787万
展开全部
lambda 创建一个匿名函数。冒号前面是传入参数,后面是一个处理传入参数的单行表达式。
调用lambda函数返回表达式的结果。
list的sort 同于内建函数sorted。它有三个参数cmp,key,reverse,均有默认值。
cmp是一个比较器,自定义比较器的话传入两个参数x,y,返回值限制为1(x>y), 0(x=y), -1(x<y)。默认是常规比较,数字比较,字符串比较等等。
key是对序列元素处理(比如问题中序列元素仍是序列,就可以再对序列取索引值),也就是sort的比较器实际接收到值是key处理后的结果(问题中实际参与比较的是1,2,3,4)。
reverse默认是False,意思是从小到大排序,传入True,就从大到小排。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式