仓酷云
标题:
来谈谈: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