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之大话题小函数(2)
Oct 10 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
python中函数传参详解
Jul 03 Python
python绘制立方体的方法
Jul 02 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
Python常用模块之requests模块用法分析
May 15 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
Python中输入和输出(打印)数据实例方法
Oct 13 Python
python生成任意频率正弦波方式
Feb 25 Python
python中的plt.cm.Paired用法说明
May 31 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解决约瑟夫环示例
2014/04/09 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
javascript去掉前后空格的实例
2013/11/07 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
浅谈JavaScript 声明提升
2020/09/14 Javascript
python对象及面向对象技术详解
2016/07/19 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
python实现控制台打印的方法
2019/01/12 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
序列化Python对象的方法
2020/08/01 Python
python如何停止递归
2020/09/09 Python
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
职业女性的职业规划
2014/03/04 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
公司会议策划方案
2014/05/17 职场文书
商场收银员岗位职责
2015/04/07 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
入团申请书格式
2019/06/20 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js