python三元运算符实现方法


Posted in Python onDecember 17, 2013

这是今天在温习lambda表达式的时候想到的问题,众所周知C系列语言中的 三元运算符(?:)是一个非常好用的语句,

关于C中的三元运算符

表达式1?表达式2:表达式3

那么在python应该如何实现呢,请看下面例子:

答案是:X = (表达式1)and 表达式2(真值返回)or 表达式3(假值返回)

举个例子:

def main():
    y = 5
    x = (y > 5) and 2 or 4
    print x
    pass

这段代码的是意思的输出是4,可以把表达式的条件改为(y<=5)这时候输出就是2

为什么能得到这样的结果:

0、''、[]、()、{}、None在布尔上下文中为假;其它任何东西都为真。
在Python中,and和or执行布尔逻辑演算,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
如果布尔上下文中的所有值都为真,那么and返回最后一个值。上下文中的某个值为假,则and返回第一个假值。
如果有一个值为真,or立刻返回该值。如果所有的值都为假,or返回最后一个假值
基于上述的背景,你应该还能理解这个表达式的含义了吧。

“注:“里面应该是这个用法的一些缺陷,如果表达式2或3是几个定义的假值(0、''、[]、()、{}、None)之一,就会影响判断了,我的建议是吧这些假值都用字符串的形式表现,并且将“”特殊处理为“”。后续再做判断

再次见识到Python的强大,如果您有什么见解欢迎评论。

后记:

最近看了一些文章,有位大神对这个问题对这个缺陷给了一个完美的解决方案

X=(表达式1)and[表达式2(真值返)]or[表达式3(假值返回)](注:表达式2以及表达3不能为0、''、[]、()、{}、None)

对表达式2,3用中括号括起来,这样两者的值将永远不会为假,这个解决方案的确不错。

Python 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
Python发送邮件的实例代码讲解
Oct 16 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
Python基于httpx模块实现发送请求
Jul 07 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
用python写asp详细讲解
Dec 16 #Python
python模块restful使用方法实例
Dec 10 #Python
python解析模块(ConfigParser)使用方法
Dec 10 #Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 #Python
python socket网络编程步骤详解(socket套接字使用)
Dec 06 #Python
python3图片转换二进制存入mysql
Dec 06 #Python
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 #Python
You might like
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP 中的批处理的实现
2007/06/14 PHP
php自动获取目录下的模板的代码
2010/08/08 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php获取随机数组列表的方法
2014/11/13 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python datetime包函数简单介绍
2019/08/28 Python
python进行参数传递的方法
2020/05/12 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
中国入世承诺
2014/04/01 职场文书
综合实践活动报告
2015/02/05 职场文书
建党伟业电影观后感
2015/06/01 职场文书
golang import自定义包方式
2021/04/29 Golang
Selenium浏览器自动化如何上传文件
2022/04/06 Python