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
0
投稿

猜你喜欢

  • 数据库安全管理的三个经验分享

    2009-04-01 15:49:00
  • 在CMD中操作mysql数据库出现中文乱码解决方案

    2024-01-19 10:38:03
  • js实现随屏幕滚动的带缓冲效果的右下角广告代码

    2024-06-07 15:26:48
  • python中defaultdict的用法详解

    2021-05-02 11:11:07
  • 基于javascript的Form表单验证

    2024-04-10 16:20:03
  • 详解解Django 多对多表关系的三种创建方式

    2021-03-13 04:59:16
  • Django 开发调试工具 Django-debug-toolbar使用详解

    2022-03-18 02:31:07
  • 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
  • PHP 中关于ord($str)&gt;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
  • 全面解析Bootstrap中tooltip、popover的使用方法

    2024-05-21 10:14:19
  • python commands模块的适用方式

    2022-02-26 19:38:14
  • Apache DophinScheduler定时调度Python脚本的实现

    2021-06-23 15:02:54
  • python 对dataframe下面的值进行大规模赋值方法

    2022-01-08 07:04:19
  • asp之家 网络编程 m.aspxhome.com