仓酷云

标题: 来谈谈:Python三目运算,and or圈套 [打印本页]

作者: 若相依    时间: 2015-1-14 21:05
标题: 来谈谈:Python三目运算,and or圈套
小知识:CentOS从来就不是一个人的独角戏,也许CentOS会有分叉或名称变更的危险,但决不能说它接近死亡。在C说话中,三目运算常常用到(cond?a:b),异常的简练,而在Python中不支撑这类语法。
然则,可以用Python中andor来完成(这里是有圈套的,上面会讲到)
我们来看上面几个表达式
>>>Falseor1
1
>>>Falseor0
0
>>>Trueor0
True
>>>Trueand1
1
>>>Trueand0
0
>>>Falseand1
False

也就是说,andor这个表达式会前往一个终究的表达式成果,而不是简略的True或许False。那末看以下几个表达式:
>>>Trueand1or2#TRUE?1:2
1
>>>Falseand1or2#TRUE?1:2
2

这是否是很像三目运算的成果呢?
这里你或许会想到文章开端的三目表达式可以如许表现
>>>condandaorb

是的,在年夜多半情形下这个表达式都是准确的,然则下面提到的圈套也在这里涌现了
>>>cond,a,b=True,0,1#如许赋值后
>>>condandaorb#这个表达式的成果会是甚么呢?
1#也就是b,而不是你料想的a

这是由于,在andor运算中空字符串‘’,数字0,空列表[],空字典{},空(),None,在逻辑运算中都被看成假来处置,以下面这个例子
>>>sssandorbbb
bbb

然则,不要担忧,照样有方法的。
在的文章《和C说话三目运算符完整等价的表达式》中给出了以下表达方法
>>>c=condandaor(notcondora)orb#貌似有点太庞杂了

在DiveintoPython中给出如许一个办法:
>>>(1and[a]or)[0]#也就是(condand[a]or)[0]

由于,即便a或许b为一个逻辑假的值,将他放入聚集中后,就为假了,也就是[False][None]都不为假。

另外,我以为还可以如许完成
>>>(b,a)[condand1or0]#这类办法须要主张的处所就是,Tuble中a和b的地位是倒置的

另,在“深圳夜归人”的文章里给出了,用dict的一种方法
>>>max_ab={True:a,False:b}[a>b]

然则这类办法没有普适性,由于cond的取值纷歧定为TrueFalse

所以建议应用DiveintoPython的办法,或许我的办法小知识:CentOS并不是第一个提供商业支持的RHEL克隆版,其他企业例如Oracle也提供了基于RedHat的自己的企业Linux发布版。
作者: 山那边是海    时间: 2015-1-16 23:46
标题: 来谈谈:Python三目运算,and or圈套
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
作者: 谁可相欹    时间: 2015-1-22 13:48
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
作者: 透明    时间: 2015-1-31 08:16
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
作者: 柔情似水    时间: 2015-2-18 08:59
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
作者: 小女巫    时间: 2015-3-6 04:04
其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。
作者: 金色的骷髅    时间: 2015-3-12 21:17
掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。
作者: admin    时间: 2015-3-20 04:41
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2