【发布时间】:2020-06-19 14:28:10
【问题描述】:
真的很好奇,浏览了一些基本概念并寻求您的一些友好帮助。
我真的只是想知道为什么我新统一/联合/加入的集合没有按预期返回我的 True 值,而是返回了我的 False 值。
我有以下代码:
mySet1 = {1, 2, "Hello}
mySet2 = {"World!", 2.5, True, False}
myUnion = mySet1.union(mySet2)
print (myUnion)
提前感谢您的帮助:)
【问题讨论】:
-
因为
True == 1和False == 0,(注意,issubclass(bool, int) is True) -
换句话说,在 Python 的类层次结构中,布尔对象是整数对象。有些人不喜欢这个,确实,我个人觉得不太理想,但多半是历史考量的结果,
bool类型直到Python 2.3才被添加,在此之前,1和0被用作 True 和 False,就像在 C 中一样,所以bool类型与以前的用法兼容。 -
严格来说,像集合这样的基于散列的容器并不关心类型本身。任何散列到相同值并为
==返回True的对象将在基于散列的容器中被视为相同。