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 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
Jun 04 Python
python中使用enumerate函数遍历元素实例
Jun 16 Python
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
分享6个隐藏的python功能
Dec 07 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python 接收处理外带的参数方法
Dec 03 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
用Python将库打包发布到pypi
Apr 13 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
用文本作数据处理
2006/10/09 PHP
15种PHP Encoder的比较
2007/03/06 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
JS 对象介绍
2010/01/20 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
javascript 实现map集合
2015/04/03 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
基于Python的接口测试框架实例
2016/11/04 Python
python列表的增删改查实例代码
2018/01/30 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
用python与文件进行交互的方法
2018/03/01 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
有关爱国演讲稿
2014/05/07 职场文书
产品推广策划方案
2014/05/10 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
财务部会计岗位职责
2015/02/03 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书