点击以下链接可以快速访问全部我发表的Python相关文章:
Nick WU:Nick WU的python文章目录(持续更新中...)zhuanlan.zhihu.com1. 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...
2. 指定默认值
X = A or default # 若A非空则X = A,否则X为默认值
3. 判断字符串是否为空
# 常规写法:
if X != '':xxx# 简便写法:
if X:xxx
4. 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