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 相关文章推荐
Django中模版的子目录与include标签的使用方法
Jul 16 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
python实现逆序输出一个数字的示例讲解
Jun 25 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
Python对excel的基本操作方法
Feb 18 Python
python3 hdf5文件 遍历代码
May 19 Python
Python 语言实现六大查找算法
Jun 30 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
jQuery Selector选择器小结
2010/05/06 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python2.7实现邮件发送功能
2018/12/12 Python
ubuntu上安装python的实例方法
2019/09/30 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
pytorch构建多模型实例
2020/01/15 Python
python中shell执行知识点
2020/05/06 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
公司活动邀请函
2014/01/24 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA