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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Golang与python线程详解及简单实例
Apr 27 Python
python监测当前联网状态并连接的实例
Dec 18 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
Jan 14 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
利用python清除移动硬盘中的临时文件
Oct 28 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
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js如何打印object对象
2015/10/16 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python之文件读取一行一行的方法
2018/07/12 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
python next()和iter()函数原理解析
2020/02/07 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
用友笔试题目
2016/10/25 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
警示教育活动总结
2014/05/05 职场文书
经营管理策划方案
2014/05/22 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
党支部综合考察意见
2015/06/01 职场文书