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多进程操作实例
Nov 21 Python
Python Property属性的2种用法
Jun 21 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
python生成密码字典的方法
Jul 06 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python新手学习可变和不可变对象
Jun 11 Python
通过代码简单了解django model序列化作用
Nov 12 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 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
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
php 生成短网址原理及代码
2014/01/23 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python中open函数的基本用法示例
2019/09/07 Python
python conda操作方法
2019/09/11 Python
flask 实现token机制的示例代码
2019/11/07 Python
python 并发下载器实现方法示例
2019/11/22 Python
基于Python的OCR实现示例
2020/04/03 Python
Python新手学习函数默认参数设置
2020/06/03 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
电子商务网站的创业计划书
2014/01/05 职场文书
代理班主任的自我评价
2014/02/04 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
工商管理专业自荐信
2014/06/03 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
优秀员工自荐书
2015/03/06 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL