python三元运算符实现方法
这是今天在温习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概率计算器实现方法.分享给大家供大家参考.具体实现方法如下: from random import randrange #randrange form random module def calc_prob(strengths): """A function that receives an array of two numbers indicating the strength of each party and returns the winne
-
Python使用random和tertools模块解一些经典概率问题
random 模块中的常用函数 复制代码 代码如下: random() 返回一个位于区间 [0,1] 内的实数: uniform(a, b) 返回一个位于区间 [a,b] 内的实数: randint(a, b) 返回一个位于区间 [a,b] 内的整数: choice(sequence) 返回一个位于 sequence 中的元素,其中,sequence 为一个有序序列,如 list.string 或者 tuple 等类型: randrange([start], stop[, step]) 等效于
-
总结Python中逻辑运算符的使用
下表列出了所有Python语言支持的逻辑运算符.假设变量a持有10和变量b持有20,则: 示例: 试试下面的例子就明白了所有的Python编程语言提供了逻辑运算符: #!/usr/bin/python a = 10 b = 20 c = 0 if ( a and b ): print "Line 1 - a and b are true" else: print "Line 1 - Either a is not true or b is not true" if
-
python 运算符 供重载参考
二元运算符 特殊方法 + __add__,__radd__ - __sub__,__rsub__ * __mul__,__rmul__ / __div__,__rdiv__,__truediv__,__rtruediv__ // __floordiv__,__rfloordiv__ % __mod__,__rmod__ ** __pow__,__rpow__ << __lshift__,__rlshift__ >> __rshift__,__rrshift__ & __an
-
跟老齐学Python之眼花缭乱的运算符
在计算机高级中语言,运算符是比较多样化的.其实,也都源于我们日常的需要. 算术运算符 前面已经讲过了四则运算,其中涉及到一些运算符:加减乘除,对应的符号分别是:+ - * /,此外,还有求余数的:%.这些都是算术运算符.其实,算术运算符不止这些.根据中学数学的知识,看官也应该想到,还应该有乘方.开方之类的. 下面列出一个表格,将所有的运算符表现出来.不用记,但是要认真地看一看,知道有那些,如果以后用到,但是不自信能够记住,可以来查. 运算符 描述 实例 + 加 - 两个对象相加 10+20 输出
-
Python实现的概率分布运算操作示例
本文实例讲述了Python实现的概率分布运算操作.分享给大家供大家参考,具体如下: 1. 二项分布(离散) import numpy as np from scipy import stats import matplotlib.pyplot as plt ''' # 二项分布 (binomial distribution) # 前提:独立重复试验.有放回.只有两个结果 # 二项分布指出,随机一次试验出现事件A的概率如果为p,那么在重复n次试验中出现k次事件A的概率为: # f(n,k,p) =
-
一步步解析Python斗牛游戏的概率
过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). 斗牛的玩法是: 1.把牌中的JQK都拿出来 2.每个人发5张牌 3.如果5张牌中任意三张加在一起是10的 倍数,就是有牛.剩下两张牌的和的10的余数就是牛数. 牌的大小: 4条 > 3条 > 牛十 > 牛九 > -- > 牛一 >没有牛 而这些牌出现的概率是有多少呢? 由于只有四十张牌,所以采用了既简单
-
python的三目运算符和not in运算符使用示例
三目运算符也就是三元运算符 一些语言(如Java)的三元表达式形如: 判定条件?为真时的结果:为假时的结果 result=x if x Python的三元表达式有如下几种书写方法: if __name__ == '__main__': a = '' b = 'True' c = 'False' #方法一:为真时的结果 if 判定条件 else 为假时的结果 d = b if a else c print('方法一输出结果:' + d) #方法二:判定条件 and 为真时的结果 or 为假时的结果
-
解析Python中的二进制位运算符
下表列出了所有的Python语言的支持位运算符.假设变量a持有60和变量b持有13,则: 示例: 试试下面的例子就明白了所有的Python编程语言提供了位运算符: #!/usr/bin/python a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print "Line 1 - Value of c is ", c c = a | b; # 61 = 0011 1
-
Python对小数进行除法运算的正确方法示例
求一个算式 复制代码 代码如下: a=1 b=2 c=3 print c*(a/b) 运行结果总是0,反复检查拆开以后,发现在Python里,整数初整数,只能得出整数. 也就是 a 除 b 这个结果永远是0,只要把a或者b其中一个数改成浮点数即可. 复制代码 代码如下: a=1 b=2 c=3 print c*(a/float(b)) print c*(float(a)/b) 这样才能准确算出a除b的正确结果,当然,如果a比b大,并且不需要小数位数部分可以不用float. 如: 复制代码
-
实例说明Python中比较运算符的使用
下表列出了所有Python语言支持的比较操作符.假设变量a持有10和变量b持有20,则: 例如: 试试下面的例子就明白了所有的Python编程语言提供的比较操作符: #!/usr/bin/python a = 21 b = 10 c = 0 if ( a == b ): print "Line 1 - a is equal to b" else: print "Line 1 - a is not equal to b" if ( a != b ): print &q
随机推荐
- js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
- 详解Java项目中读取properties文件
- 详解iOS多线程之2.NSThread的加锁@synchronized
- Drupal7连接多个数据库及常见问题解决
- Python正则表达式之基础篇
- python抓取网页中的图片示例
- 讲的非常不错的PHP编码规范第1/3页
- 解析PHP提交后跳转
- CMD进入控制面板的命令小结
- python使用opencv读取图片的实例
- node.js中的http.response.write方法使用说明
- 浅谈对java中锁的理解
- Java实现按权重随机数
- PHP_MySQL教程-第一天
- python实现机械分词之逆向最大匹配算法代码示例
- C语言学生信息管理系统小项目
- python如何定义带参数的装饰器
- c#定期删除文件的实操方法
- python如何制作英文字典
- Vue 实现前端权限控制的示例代码