找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 10589|回复: 5

[求助] 各位大神lambda x,y : (x > y) * x + (x < y) * y什么意思?谢谢

1

主题

2

帖子

2

积分

贫民

积分
2
嘿chao 发表于 2017-12-7 15:08:23 | 显示全部楼层 |阅读模式
(x > y) * x + (x < y) * y帮忙解释一下,谢谢
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-7 16:28:12 | 显示全部楼层
x > y 返回True 或 False
(x > y) * x => 布尔类型隐式转换为int (True是1, False 0)
所以(x > y) * x + (x < y) * y 等价于 max(x, y) if x!=y else 0
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
嘿chao  楼主| 发表于 2017-12-7 16:33:01 | 显示全部楼层
可以这么理解吗  x>y是true的话,就是1,   1乘以x的值再加上后面计算的值,最后得出结果
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
mehxh1979 发表于 2017-12-8 16:43:20 | 显示全部楼层
完整的理解是不是这样子的:
匿名比较两个数的大小的函数,返回数值较大的数,
当x>y的时候: (x>y)*x + ( x<y)*y --> 1*x+0*y -->x
当x<y的时候: (x>y)*x + ( x<y)*y --> 0*x+1*y -->y
功效等同于max(x,y)
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-8 16:51:43 | 显示全部楼层
mehxh1979 发表于 2017-12-8 16:43
完整的理解是不是这样子的:
匿名比较两个数的大小的函数,返回数值较大的数,
当x>y的时候: (x>y)*x + ( ...

当x==y的时候返回0 所以不是max(x,y)而是 max(x, y) if x!=y else 0
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
mehxh1979 发表于 2017-12-8 17:28:00 | 显示全部楼层
剑心无痕 发表于 2017-12-8 16:51
当x==y的时候返回0 所以不是max(x,y)而是 max(x, y) if x!=y else 0

谢谢提醒,不够严谨,没有考虑x=y的情形:
当x=y时候:(x>y)*x + ( x<y)*y --> 0*x+0*y -->0
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表