python三元运算符实现方法

 更新时间:2013年12月17日 09:07:13   作者:  
这篇文章主要介绍了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添加模块搜索路径和包的导入方法

    今天小编就为大家分享一篇python添加模块搜索路径和包的导入方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 利用python将pdf输出为txt的实例讲解

    利用python将pdf输出为txt的实例讲解

    下面小编就为大家分享一篇利用python将pdf输出为txt的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件

    python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件

    这篇文章主要介绍了python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • python用函数创造字典的实例讲解

    python用函数创造字典的实例讲解

    在本篇文章里小编给大家整理的是一篇关于python用函数创造字典的实例讲解内容,有需要的朋友们可以学习参考下。
    2021-06-06
  • Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解

    Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解

    django自带的admin站点虽然功能强大,但是界面不是很好看。这篇文章主要介绍了Python3.6+Django2.0以上 xadmin站点的配置和使用 ,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • pycharm使用matplotlib画图问题解决方法

    pycharm使用matplotlib画图问题解决方法

    Pycharm是一款功能强大的Python集成开发环境(IDE),它提供了许多有用的工具和功能,可以帮助开发人员更轻松地编写和调试Python代码,其中一个有用的工具是Pycharm如何画图,本文给大家介绍在pycharm中使用matplotlib画图问题,感兴趣的朋友一起看看吧
    2023-11-11
  • python微信公众号开发简单流程

    python微信公众号开发简单流程

    这篇文章主要介绍了python微信公众号开发的相关资料,分步骤为大家分享python微信公众号开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python元组定义及集合的使用

    Python元组定义及集合的使用

    这篇文章主要介绍了Python元组定义及集合的使用,元组是Python中的一个内置的数据结构,它是一个不可变的序列,所谓的不可变序列就是不可以进行增删改的操作
    2022-07-07
  • python循环某一特定列的所有行数据(方法示例)

    python循环某一特定列的所有行数据(方法示例)

    在Python中,处理表格数据(比如CSV文件、Excel文件等)时,我们通常会使用pandas库,因为它提供了丰富的数据结构和数据分析工具,下面,我将以处理CSV文件中的某一特定列的所有行数据为例,给出详细、完整的代码示例,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Django中实现点击图片链接强制直接下载的方法

    Django中实现点击图片链接强制直接下载的方法

    这篇文章主要介绍了Django中实现点击图片链接强制直接下载的方法,涉及Python操作图片的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05

最新评论