python三元运算符实现方法
时间:2022-08-19 23:11:34
这是今天在温习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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
数据库安全管理的三个经验分享
2009-04-01 15:49:00
在CMD中操作mysql数据库出现中文乱码解决方案
2024-01-19 10:38:03
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2024-06-07 15:26:48
![](https://img.aspxhome.com/file/2023/7/122597_0s.jpg)
python中defaultdict的用法详解
2021-05-02 11:11:07
基于javascript的Form表单验证
2024-04-10 16:20:03
![](https://img.aspxhome.com/file/2023/3/136703_0s.jpg)
详解解Django 多对多表关系的三种创建方式
2021-03-13 04:59:16
Django 开发调试工具 Django-debug-toolbar使用详解
2022-03-18 02:31:07
![](https://img.aspxhome.com/file/2023/2/110542_0s.png)
go语言beego框架jwt身份认证实现示例
2024-04-25 15:15:21
怎样设计"帮助"最有效?
2008-04-12 14:18:00
学习JavaScript设计模式之装饰者模式
2023-07-19 08:59:07
python画图把时间作为横坐标的方法
2021-06-17 08:13:28
![](https://img.aspxhome.com/file/2023/0/89340_0s.jpg)
PHP 中关于ord($str)>0x80的详细说明
2024-05-13 09:24:13
numpy.random.shuffle打乱顺序函数的实现
2021-02-04 07:19:34
python3实现表白神器
2023-07-27 03:54:01
python使用Flask框架获取用户IP地址的方法
2023-08-09 03:15:23
python 基本结构语句(函数和模块)
2023-06-14 00:37:56
![](https://img.aspxhome.com/file/2023/5/85175_0s.png)
全面解析Bootstrap中tooltip、popover的使用方法
2024-05-21 10:14:19
![](https://img.aspxhome.com/file/2023/9/125959_0s.jpg)
python commands模块的适用方式
2022-02-26 19:38:14
Apache DophinScheduler定时调度Python脚本的实现
2021-06-23 15:02:54
![](https://img.aspxhome.com/file/2023/0/93780_0s.png)
python 对dataframe下面的值进行大规模赋值方法
2022-01-08 07:04:19