求助求助,以前的三元运算符(x<y and [x] or [y])[0]后面的0什么意思]
我知道前面如果x<y并且x是真的话输出x,假的话输出y,并且转化为列表的方式,但是后面的0是什么意思 知道了,应该是前面列表的第0个索引 这个式子可以简化成(x<y and x or y),即x<y为真时输出x,否则输出y。但当x和y的有值为0(等同于flase)的情况就会判断失误。因此改为和,这样和就都为真了,再加上(0),又变成了列表的第一个元素,即复原为x或y。一般python的写法为 x if x<y else y
这样代码更易理解。
冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x
谢谢 冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x
谢谢了,明白啦~ 谢谢,明白了 冬雪雪冬 发表于 2016-1-5 14:06
这个式子可以简化成(x
or 优先级不是高于 and 吗。 那么 这句话不就变成 (x<y) and ( or ), 由于 为true,所以又变成 (x<y)and 。哪里理解不对吗 林斌 发表于 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 首先计算x<y,如果是True,即True and 为, or =,则=x(输出列表的第一个元素);如果x<y是False,即False and =False,False or =,=y。实现的功能是x if x < y else y,即三元操作。而(x < y and or )为何不采用x < y and x or y是因为如果x=0,y>0时,x < y and x =0,而使之执行or操作,3结果为y,使结果出错,故而采用列表的形式。 当x<y成立,x<y返回真, 真 and 返回, 得x
当x<y不成立,x<y返回假 , 假 and 返回假, 假 or 返回, 得y 林斌 发表于 2017-2-21 17:35
or 优先级不是高于 and 吗。 那么 这句话不就变成 (x
不是,and优先级高于or的
not or and 的优先级是不同的:not > and > or 上面有人说,当x 或 y 有值为0时会有问题产生,可我试了,无论是单个为0还是都为0,都是可以比较的,那问题到底是什么呢 哦不怕了 发表于 2016-1-5 14:06
知道了,应该是前面列表的第0个索引
x<y正确不是应该返回True吗,错误返回False吗?
页:
[1]