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利用Nagios增加微信报警通知的功能
Feb 18 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
Python中的pack和unpack的使用
Mar 12 Python
Python之批量创建文件的实例讲解
May 10 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
python实现淘宝秒杀脚本
Jun 23 Python
利用python实现对web服务器的目录探测的方法
Feb 26 Python
TensorFlow 显存使用机制详解
Feb 03 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
python开发人人对战的五子棋小游戏
May 02 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
JMenuTab简单使用说明
2008/03/13 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript 函数速查表
2010/02/07 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
python解析文件示例
2014/01/23 Python
Python中取整的几种方法小结
2017/01/06 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python实现多进程的四种方式
2019/02/22 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
python实现处理mysql结果输出方式
2020/04/09 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
力学专业毕业生自荐信
2013/11/17 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS