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 相关文章推荐
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
python从入门到精通(DAY 1)
Dec 20 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
python调用自定义函数的实例操作
Jun 26 Python
Python循环结构的应用场景详解
Jul 11 Python
pycharm激活方法到2099年(激活流程)
Sep 22 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
python利用opencv实现颜色检测
Feb 23 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
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
Python3访问并下载网页内容的方法
2015/07/28 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
python利用微信公众号实现报警功能
2018/06/10 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
详解pandas赋值失败问题解决
2020/11/29 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
中专毕业自我鉴定
2013/10/16 职场文书
本科毕业生自荐信
2014/06/02 职场文书
感恩教育月活动总结
2014/07/07 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
高二化学教学反思
2016/02/22 职场文书
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers