python中的布尔操作
1. Python中的布尔值
- Python中任何对象都有一个固定的布尔值,即非零、非空的对象为真,数字0、空对象和None为假
- True和False为1和0的特殊显示形式
- 布尔操作and、or会根据一定规则返回操作对象(下文详细解释)
- 布尔运算会在结果确定的时候停止运算(短路)
2. Python中的布尔操作
and
:全真为真,并返回第二个对象or
:有一真为真,返回第一个对象not
:返回True或者False
(1) and
-
真 and 真:返回第二个对象,因为只有第一个和第二个对象同时为真时才为真,即不会短路
-
真 and 假:返回第二个对象,即假
-
假 and 真:短路,直接返回第一个对象
-
假 and 假:短路,直接返回第一个对象
>>> 1 and 2 2 >>> 1 and [] [] >>> [] and 1 [] >>> [] and () []
(2) or
-
真 or 真:短路,直接返回第一个对象
-
真 or 假:短路,直接返回第一个对象
-
假 or 真:结果为真,返回第二个对象
-
假 or 假:结果为假,返回第二个对象
>>> 1 or 2 1 >>> 1 or [] 1 >>> [] or 1 1 >>> [] or {} {}
(3) not
not
的操作比较简单,根据not
后对象的真假,输出相反的True
或者False
>>> not 1
False
>>> not 0
True
>>> not []
True
3.布尔运算的应用
(1) if/else 三元表达式
A = B if C else D
# 等效于:
if C:
A = B
else:
A = D
含义为:若C成立,A = B;否则 A = D
# Example
>>> A = 1 if True else 2
>>> A
1
>>> A = 1 if False else 2
>>> A
2
(2) 其他应用
-
从一个集合中选取非空的对象
X = A or B or C or D or E # 若A非空则X = A,否则继续看B,若B非空则X = B...
-
指定默认值
X = A or default # 若A非空则X = A,否则X为默认值
-
判断字符串是否为空
# 常规写法: if X != '': xxx # 简便写法: if X: xxx
-
filter()
函数配合bool()
函数将列表中非空对象找出来filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
——以上内容摘自:菜鸟教程
bool()
函数可以返回对象的真假# Example 1:返回列表中的真对象 >>> A = [1, 0, 'sss', [],()] >>> list(filter(bool, A)) [1, 'sss'] # Example 2: 返回列表中的假对象:借助lambda函数造一个not函数 >>> A = [1, 0, 'sss', [],()] >>> list(filter(lambda x:0 if x else 1, A)) [0, [], ()] # Example 3:【简化写法】借助列表推导返回列表中的真对象 >>> A = [1, 0, 'sss', [],()] >>> B = [x for x in A if x] >>> B [1, 'sss']
-
any()
和all()
函数分别检测列表中是否存在或全部为真>>> A = [1, 0, 'sss', [],()] >>> any(A) True >>> all(A) False