Python中and和or的使用,list/字符串之间的and 和 or的使用,表达式之间的使用and和or的返回值

Python中and和or的使用,list/字符串之间的and 和 or的使用

在我的一次写代码过程中,我本来想判断两个列表是否都为空,如果两个列表都为空,则返回False,如果有任意一个不为空,就返回True;
于是我写了如下代码,return list1 and list2,结果如果两个列表都为空,返回的是[],我发现python列表之间使用and和or并不像我想象的那样返回True或False。

0. 写在前面,具体原理看后续的内容

如果想实现上述功能,可用下列代码:

1. 
return (list1 == [] and list2 == []) 
# 或者
2. 
return not(list1 or list2)

1. and 在列表/字符串之间的运行规则

用法解释:多个表达式(列表、字符串等对象,这里不太会描述,意思理解即可)之间进行的and操作:
1. 如果表达式全为真,则返回最后一个真的表达式;
2. 如果存在真,返回第一个假,并且假后面的表示式不进行再判断
理解起来,常说and操作:一假为假,所以存在假的时候,一定为假。只有所有都是真的时候才是真
该博文介绍了Python中常见的假的表示: Python真和假

1.1 存在假

表达式存在假,返回的是第一个假

print(0 and [] and '')   # 第一个假为0
print(1 and [] and '1')	# 第一个假为[]

输出结果:

0
[]

1.2 全为真

表达式全为真,返回最后一个真

print(1 and '3' and [3])
----------------
[3]

1.3 验证:当存在假的时候,不继续向后判断其他的表达式

可以看出,list1是没有索引1的,如果下列表达式全部检测完,应该会报错,但是没有,是因为[]为假,找到第一个为假的直接返回

list1 = []
print(1 and [] and list1[1])
----------------
[]

2. or 操作

用法解释:
表达式存在真的时候,返回第一个真,并且后续表达式不再验证
当表达式全为假的时候,返回最后一个假。
理解:or操作是一真为真,所以找到一个真就说明全为真,直接进行返回找到的第一个真就行了。只有全为假的时候才为假

2.1 存在真

始终返回找到的第一个真

print(1 or [] or '9')
print([] or [1] or '10')
----------
1
[1]

2.2 全为假

返回最后一个假。注意: 5 == 6 表示的是False

print(0 or '' or [])
print(0 or [] or 5==6)
-----------------
[]
False

2.3 测试找到一个真之后不进行后续的检测

同and操作的检测方法

list1 = []
print(1 or [] or list1[1])
-------------
1

最后

如果想实现我本来的功能,可以使用如下代码:
方式1 是直接判断两个列表都为空,只有都为空的时候才是True
方式2 同理,or 一真为真,只有两个都是空的时候,表达式结果为[ ],再加个not就是True

1. 
return (list1 == [] and list2 == []) 
# 或者
2. 
return not(list1 or list2)

3 参考文献

除此之外还有and-or用法,他就是按照and和or的规则,进行依次判断,知道了上面的原理就可以自行领会了
python中and和or的区别-Python中and-or语法

你可能感兴趣的:(Python,库/函数使用,python,数据结构)