python问题
smaller=(x<yand[x]or[y])[0]怎么理解?我知道是取xy中的较小的一个但是为什么?...
smaller=(x < y and [x] or [y])[0]怎么理解?
我知道是取x y中的较小的一个 但是为什么? 展开
我知道是取x y中的较小的一个 但是为什么? 展开
4个回答
展开全部
这就是python中著名的and-or技巧了!python中没有C语言里面方便的?:算符,但是这个技巧可以发挥相同的作用。
如果x<y为真,取and后面的第一项
如果x<y为假,取and后面的第二项
至于中括号是为了防止x=0这种特殊情况,因为and-or技巧此时不起作用——这也是唯一需要注意的特例。例如x=0,y=1:此时显然为真,但是x<y and x or y中因为x为假,所以最后得到的是y——较大的那个。但是加上中括号[x]=[0]是一个真值,最后得到的是[0]。之后在取第0项就行了~
如果x<y为真,取and后面的第一项
如果x<y为假,取and后面的第二项
至于中括号是为了防止x=0这种特殊情况,因为and-or技巧此时不起作用——这也是唯一需要注意的特例。例如x=0,y=1:此时显然为真,但是x<y and x or y中因为x为假,所以最后得到的是y——较大的那个。但是加上中括号[x]=[0]是一个真值,最后得到的是[0]。之后在取第0项就行了~
展开全部
在 python2.5 的 what's new 有详细解释
这个是在 python 2.5 前的三元逻辑操作表示方法
python2.5 正式支持
smaller = x if x<y else y
这个是在 python 2.5 前的三元逻辑操作表示方法
python2.5 正式支持
smaller = x if x<y else y
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里巧妙的利用了and和or
True and [x] = [x]
False or [y] = [y]
括号里返回的是[x]或者[y]
最后的[0]是提取元素
其实如果x y 都赋了值的话
smaller = (x < y and x or y)
我坦白
其实你问之前我也不知道
现在咱们都知道了
嘿嘿
True and [x] = [x]
False or [y] = [y]
括号里返回的是[x]或者[y]
最后的[0]是提取元素
其实如果x y 都赋了值的话
smaller = (x < y and x or y)
我坦白
其实你问之前我也不知道
现在咱们都知道了
嘿嘿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询