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 07 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
Python的多态性实例分析
Jul 07 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 Python
聊聊python中的异常嵌套
Sep 01 Python
关于python中导入文件到list的问题
Oct 31 Python
Django如何创作一个简单的最小程序
May 12 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
利用node.js如何创建子进程详解
2017/12/09 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
在Python程序中实现分布式进程的教程
2015/04/28 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
python爬虫实例详解
2018/06/19 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
python中pickle模块浅析
2020/12/29 Python
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
init进程的作用
2015/08/20 面试题
全国优秀辅导员事迹材料
2014/05/14 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
党员学习群众路线教育实践活动对照检查材料
2014/09/23 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
总结几个非常实用的Python库
2021/06/26 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript