返回顶部
首页 > 资讯 > 后端开发 > Python >无意学会了python中and和or的有
  • 359
分享到

无意学会了python中and和or的有

学会了python 2023-01-31 05:01:21 359人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

    今天看书,无意中看到了python的and和or的一个有趣用法,最后在网上查找这种用法的机制,归根结底还是要仔细理解Python中and和or的机制。Python中if-else有多种写法。假设a=10,b=20,取较大者。最常规的

    今天看书,无意中看到了python的and和or的一个有趣用法,最后在网上查找这种用法的机制,归根结底还是要仔细理解Python中and和or的机制。

Python中if-else有多种写法。假设a=10,b=20,取较大者。

最常规的方法是:

if a > b:
    c = a
else:
    c = b

稍微高级一点的用法就是用表达式

c = a if a > b else b

我就是经常用这种方法。

再高级一点的用法就是用二维列表

c = [a,b][a<b]

这方法也很好理解,Python的比较运算符返回的是布尔值。

更高级的用法就是用and-or

c = (a > b and [a] or [b])[0]

这种方法如果你第一眼没看懂,那就是和我一样,基础知识不够扎实,如果你了解and和or的机制,瞬间会恍然大悟的,更重要的是这种用法代码不仅更Pythonic,而且效率更高


    在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。

        在布尔上下文中从左到右演算表达式的值,使用and的话,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值;如果布尔上下文中的某个值为假,则 and 返回第一个假值

     使用or的话, 如果有一个值为真,or 立刻返回该值;如果所有的值都为假,or 返回最后一个假值


    注意 :or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值,很多语言都支持这种机制。


这一点在学习Python时确实没太注意,一直以为返回的是布尔值。

下面看几个例子吧。

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
>>> 'a' or 'b'
'a'
>>> '' or 'b''b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'

>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'

按照演算规则进行演算,不难,有兴趣可以试试。

--结束END--

本文标题: 无意学会了python中and和or的有

本文链接: https://lsjlt.com/news/188630.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作