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 sys模块sys.path使用方法示例
Dec 04 Python
Python复制文件操作实例详解
Nov 10 Python
python各种语言间时间的转化实现代码
Mar 23 Python
python Django批量导入数据
Mar 25 Python
深入学习Python中的装饰器使用
Jun 20 Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 Python
Python分析学校四六级过关情况
Nov 22 Python
Python使用numpy实现BP神经网络
Mar 10 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
详解python读取image
Apr 03 Python
tensorflow查看ckpt各节点名称实例
Jan 21 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 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
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php实现多城市切换特效
2015/08/09 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
许愿墙中用到的函数
2006/10/07 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
九种原生js动画效果
2015/11/11 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python struct.unpack
2008/09/06 Python
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
在Python中使用第三方模块的教程
2015/04/27 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
pandas中去除指定字符的实例
2018/05/18 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
Python 图片处理库exifread详解
2021/02/25 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
人事部经理岗位职责
2014/03/07 职场文书
巾帼志愿者活动方案
2014/08/17 职场文书
2015年端午节活动总结
2015/02/11 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js