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创建xml文件示例
Mar 22 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
K-近邻算法的python实现代码分享
Dec 09 Python
pytorch forward两个参数实例
Jan 17 Python
python如何通过twisted搭建socket服务
Feb 03 Python
解决Tensorflow占用GPU显存问题
Feb 03 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
python json.dumps中文乱码问题解决
Apr 01 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
python一些性能分析的技巧
Aug 30 Python
python实现高效的遗传算法
Apr 07 Python
Python的三个重要函数详解
Jan 18 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
一个查看session内容的函数
2006/10/09 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
javascript的惯性运动实现代码实例
2019/09/07 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python chardet库识别编码原理解析
2020/02/18 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
大学军训感言200字
2014/02/26 职场文书
股权转让意向书
2014/04/01 职场文书
外联部演讲稿
2014/05/24 职场文书
应聘教师求职信
2014/07/19 职场文书
创先争优宣传标语
2014/10/08 职场文书
教学督导岗位职责
2015/04/10 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
解析Java异步之call future
2021/06/14 Java/Android
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js