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 相关文章推荐
python list语法学习(带例子)
Nov 01 Python
Tornado高并发处理方法实例代码
Jan 15 Python
python实现年会抽奖程序
Jan 22 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
Opencv实现抠图背景图替换功能
May 21 Python
详解numpy的argmax的具体使用
May 27 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
Python hashlib模块加密过程解析
Nov 05 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
python中的线程threading.Thread()使用详解
Dec 17 Python
Python pandas如何向excel添加数据
May 22 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 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查看session内容的函数
2008/08/27 PHP
golang与PHP输出excel示例
2016/07/22 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS 组件系列之BootstrapTable的treegrid功能
2017/06/16 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
详解Django配置JWT认证方式
2020/05/09 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
如何撰写一封出色的求职信
2014/04/27 职场文书
商业项目策划方案
2014/06/05 职场文书
四查四看整改措施
2014/09/19 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
后勤个人工作总结
2015/02/28 职场文书
欢送会主持词
2015/07/01 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python