问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

“and”、“or”和“not”想在python中如何运用?

发布网友 发布时间:2022-04-26 06:39

我来回答

3个回答

懂视网 时间:2022-05-10 21:01

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

一、and:

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

热心网友 时间:2022-05-10 18:09

‘and’、‘or’和‘not’的优先级是not>and>or

首先,‘and’、‘or’和‘not’的优先级是not>and>or。

and :x and y 返回的结果是决定表达式结果的值。如果 x 为真,则 y 决定结果,返回 y ;如果 x 为假,x 决定了结果为假,返回 x。

or :x or y  跟 and 一样都是返回决定表达式结果的值。

not : 返回表达式结果的“相反的值”。如果表达式结果为真,则返回false;如果表达式结果为假,则返回true。

其次,逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。

例如,如果A 和C 为真而B 为假, A and B and C 不会解析C,作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。举个例子:

在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3.

而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4.

热心网友 时间:2022-05-10 19:27

not –表示取反运算;

and –表示取与运算;

or –表示取或运算。

 

运算符优先级

not > and > or

举例:

bool_one = False or not True and True

print bool_one

bool_two = False and not True or True

print bool_two

bool_three = True and not (False or False)

print bool_three

bool_four = not not True or False and not True

print bool_four

bool_five = False or not (True and True)

print bool_five

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“泛览周王传”的出处是哪里 避事的意思是什么 怠息的意思是什么 “偷闲来此一嚬呻”的出处是哪里 怠息意思和来源是什么 客厅中间沙发旁旁边放什么 客厅沙发旁边放什么合适 沙发左右摆什么位置 淘宝网无法注册邮箱验证 谁能帮我注册一个谷歌帐号,我一直注册不成功,淘宝上也买不到,在线等... python中and、or和not 三个逻辑运算符,一直理解不了,求帮助! 大葱的保存方法是什么? 回租和借贷的区别? 请问经营租赁改为融资租赁的账务处理 租金与借款互顶怎么样记做记录 提前收取房租相当于借钱吗 苹果AppStore充值了怎么取出来? 租房可以贷款了吗? 苹果手机向App Store充值后怎么用? iPhone的appstore充值按钮在哪 2021泉州军队文职报名信息怎么填写? 在AppStore充值卡购买AppStore充值码充值/兑换必须升级系统吗? 军队文职考试主要有哪些岗位? 军队文职考试的时候可以带计算器吗 怎样在appstore充值,有几种充值方法 军队文职招聘怎么进行用户注册?填写报名信息? 哪些专业能考部队文职? 大脸型适合编什么发型 脸大的女生适合什么发型 大脸女生好看发型图 大圆脸适合编什么发型图片 python中,x=[1,2],执行y=x[:],里面的x[:]什么意思 Python 中for i in range ()是什么意思? 如何在PYTHON中写“与”和“或”的选择条件,就像在C++中的‘&&’ 与... 请问Python大神怎样使用逗号分隔数字并且表示成一个list 是不是蟑螂爬过的地方特别脏? 蟑螂脏吗 蟑螂会因为家里脏而自生吗 macbookpro touchbar 怎么添加锁屏快捷键 环境脏时,蟑螂会出现,那环境整洁时,蟑螂会不会消失呢? 说是家里脏才有很多蟑螂吗 大学生怎么买社保和医保? 为什么我房间里有蟑螂啊?又不脏!恐怖! 请问哪里可以下载到su材质库免费版?求分享 sketchup有中文版本的免费下载吗? 求sketchup破解版 64位下载 求草图大师7.0安装包,谢谢你 su包包模型免费下载的网站有哪些,下载su模型的网站有哪些 正转手电钻能改成正反转吗电钻能改反? 手电钻如何调速 充电的手电钻可以改成插电的吗