鱼C论坛

 找回密码
 立即注册
查看: 10595|回复: 12

求助求助,以前的三元运算符(x<y and [x] or [y])[0]后面的0什么意思]

[复制链接]
发表于 2016-1-5 13:53:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我知道前面如果x<y并且x是真的话输出x,假的话输出y,并且转化为列表的方式,但是后面的0是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-5 14:06:05 | 显示全部楼层
知道了,应该是前面列表的第0个索引
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-5 14:06:59 | 显示全部楼层
这个式子可以简化成(x<y and x or y),即x<y为真时输出x,否则输出y。但当x和y的有值为0(等同于flase)的情况就会判断失误。因此改为[x]和[y],这样[x]和[y]就都为真了,再加上(0),又变成了列表的第一个元素,即复原为x或y。
一般python的写法为 x if x<y else y
这样代码更易理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 8 反对 0

使用道具 举报

 楼主| 发表于 2016-1-5 14:46:38 | 显示全部楼层
冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-24 14:12:56 | 显示全部楼层
冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x

谢谢了,明白啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-7 13:58:37 | 显示全部楼层
谢谢,明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-21 17:35:48 | 显示全部楼层
冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x

or 优先级不是高于 and 吗。 那么 这句话不就变成   (x<y) and ([x] or [y]), 由于[x] 为true,所以又变成 (x<y)and [x] 。哪里理解不对吗

评分

参与人数 1荣誉 +1 收起 理由
xzx1 + 1 not&amp;gt; and&amp;gt;or

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-22 14:18:28 | 显示全部楼层
林斌 发表于 2017-2-21 17:35
or 优先级不是高于 and 吗。 那么 这句话不就变成   (x

小甲鱼在第006讲作业中测试题4是: 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9。
在后面讲解中介绍了优先级:
not or and 的优先级是不同的:not > and > or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 16:49:01 | 显示全部楼层
首先计算x<y,如果是True,即True and [x]为[x],[x] or [y]=[x],则[x][0]=x(输出列表的第一个元素);如果x<y是False,即False and [x]=False,False or [y]=[y],[y][0]=y。实现的功能是x if x < y else y,即三元操作。而(x < y and [x] or [y])[0]为何不采用x < y and x or y是因为如果x=0,y>0时,x < y and x =0,而使之执行or操作,3结果为y,使结果出错,故而采用列表的形式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 7 反对 0

使用道具 举报

发表于 2019-11-30 11:10:24 | 显示全部楼层
当x<y成立,x<y返回真, 真 and [x]返回[x], [x][0]得x
当x<y不成立,x<y返回假 , 假 and [x]返回假, 假 or [y]返回[y], [y][0]得y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 18:13:22 | 显示全部楼层
林斌 发表于 2017-2-21 17:35
or 优先级不是高于 and 吗。 那么 这句话不就变成   (x

不是,and优先级高于or的
not or and 的优先级是不同的:not > and > or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-13 14:09:47 | 显示全部楼层
上面有人说,当x 或 y 有值为0时会有问题产生,可我试了,无论是单个为0还是都为0,都是可以比较的,那问题到底是什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-30 17:52:17 | 显示全部楼层
哦不怕了 发表于 2016-1-5 14:06
知道了,应该是前面列表的第0个索引

x<y正确不是应该返回True吗,错误返回False吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 14:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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