为什么 bool([]) == False 而 [] == False 在 python 布尔逻辑中是 False 而不是 True

Why is bool([]) == False while [] == False is False and not True in python boolean logic

提问人:Seffih Oualid Redouan 提问时间:7/16/2022 更新时间:7/16/2022 访问量:316

问:

我刚刚开始学习 Python,我正在尝试这个

[] == False #False 

但:

bool([]) #False

从我得到的值中,例如 [],0 ..是假的,我到底错过了什么,谢谢!

python 布尔 逻辑 boolean-logic boolean-expression

评论

1赞 jodag 7/16/2022
同样是假的,但是?1.2 == 1int(1.2) is 1
0赞 Matthias 7/16/2022
Pythons 的布尔运算文档说:“在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值被解释为 false:、、所有类型的数字零,以及空字符串和容器(包括字符串、元组、列表、字典、集合和冻结集)。简而言之:不是布尔运算。FalseNone==

答:

1赞 chepner 7/16/2022 #1

[] != False但。bool([]) == bool(False)

1赞 Michael S. 7/16/2022 #2

运算符非常字面意思。如果您要比较的 2 个事物不完全相同(这包括类型,例如 ),那么结果将始终是 。因此,布尔值与空列表在字面上不是一回事,这就是为什么是 .=="2" == 2FalseFalseFalse[][] == FalseFalse

当转换为布尔值时,空列表仅被视为“False”,您使用 .所以 的输出与 是一样的。因此是.bool([])bool([])FalseFalsebool([]) == FalseTrue

评论

1赞 Seffih Oualid Redouan 7/16/2022
这个清除了一切,谢谢!