仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 480|回复: 7
打印 上一主题 下一主题

[CentOS(社区)] 来谈谈:Python三目运算,and or圈套

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
小知识: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:34 | 只看该作者

来谈谈:Python三目运算,and or圈套

如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
谁可相欹 该用户已被删除
板凳
发表于 2015-1-22 13:48:02 | 只看该作者
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
透明 该用户已被删除
地板
发表于 2015-1-31 08:16:00 | 只看该作者
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
柔情似水 该用户已被删除
5#
发表于 2015-2-18 08:59:40 | 只看该作者
在系统检测不到与Linux兼容的显卡,那么此次安装就可能不支持图形化界面安装,而只能用文本模式安装等等。
小女巫 该用户已被删除
6#
发表于 2015-3-6 04:04:33 | 只看该作者
其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。
金色的骷髅 该用户已被删除
7#
发表于 2015-3-12 21:17:55 | 只看该作者
掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。
admin 该用户已被删除
8#
发表于 2015-3-20 04:41:42 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 09:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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