Python中and和or如何使用


Posted in Python onMay 28, 2020

Python中and、or是Python中的逻辑运算符,它们的用法如何呢?

and:

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

代码如下:

>>> 'a' and 'b' 'b' 
>>> '' and 'b' '' 
>>> 'a' and 'b' and 'c'
 'c'

在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。

如果布尔上下文中的某个值为假,则 and 返回第一个假值

or:

代码如下:

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

使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值

如果所有的值都为假,or 返回最后一个假值

注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

and-or:

and-or 结合了前面的两种语法,推理即可。

>>> 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' 
>>>

这个语法看起来类似于 C 语言中的 bool ? a : b 表达式。整个表达式从左到右进行演算,所以先进行 and 表达式的演算。 1 and 'first' 演算值为 'first',然后 'first' or 'second' 的演算值为 'first'。

0 and 'first' 演算值为 False,然后 0 or 'second' 演算值为 'second'。

and-or主要是用来模仿 三目运算符 bool?a:b的,即当表达式bool为真,则取a否则取b。

and-or 技巧,bool and a or b 表达式,当 a 在布尔上下文中的值为假时,不会像 C 语言表达式 bool ? a : b 那样工作。

安全使用and-or

代码如下:

>>> a="" 
>>> b="second" 
>>> (1 and [a] or [b])
[''] 
>>> (1 and [a] or [b])[0] '' 
>>>

由于 [a] 是一个非空列表,所以它决不会为假。即使 a 是 0 或者 '' 或者其它假值,列表 [a] 也为真,因为它有一个元素。

一个负责的程序员应该将 and-or 技巧封装成一个函数:

代码如下:

def choose(bool,a,b): 
return (bool and [a] or [b])[0] 
print choose(1,'','second') 
#''

实例补充:

>>> a ='first'
>>> b ='second'
>>>1and a or b  # 等价于 bool = true时的情况
'first'
>>>0and a or b  # 等价于 bool = false时的情况
'second'
>>> a =''
>>>1and a or b  # a为假时,则出现问题
'second'
>>>(1and[a]or[b])[0]# 安全用法,因为[a]不可能为假,至少有一个元素
''
>>>

到此这篇关于Python中and和or如何使用的文章就介绍到这了,更多相关Python中and、or用法实例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字符串匹配算法KMP实例
Jul 18 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python判断文件和字符串编码类型的实例
Dec 21 Python
python2与python3共存问题的解决方法
Sep 18 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
python中退出多层循环的方法
Nov 27 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
使用pandas读取文件的实现
Jul 31 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
Python如何安装第三方模块
May 28 #Python
python使用多线程+socket实现端口扫描
May 28 #Python
Python如何实现定时器功能
May 28 #Python
python实点云分割k-means(sklearn)详解
May 28 #Python
Python脚本实现监听服务器的思路代码详解
May 28 #Python
python中Ansible模块的Playbook的具体使用
May 28 #Python
python中如何进行连乘计算
May 28 #Python
You might like
PHP5函数小全(分享)
2013/06/06 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python函数的周期性执行实现方法
2016/08/13 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Windows下安装Scrapy
2018/10/17 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python中常见错误及解决方法
2020/06/21 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
servlet面试题
2012/08/20 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
作风建设整改方案
2014/10/27 职场文书
社区综治工作汇报
2014/10/27 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技