为什么Python会从相同的输入产生不同的集合?

4

考虑以下示例:

>>> {1, True}
set([True])
>>
>>> {True, 1}
set([1])

为什么集合的表示方式会因元素顺序不同而有所差别?

3
因为布尔值是int的子类,且True==1(以及False==0),所以这是一个重复的问题。 - Martijn Pieters
相关:在Python中,False == 0和True == 1是实现细节还是语言保证? 很难搜索到重复内容。 - Martijn Pieters
@MartijnPieters 其中一个例子可以在这里找到:[https://dev59.com/rmPVa4cB1Zd3GeqP5GLA]。 - devnull
2个回答

4
这是因为1True相等:
>>> True == 1
True
>>> 1 == True
True

该集合保留每个等价类中的一个元素。

0

判断是否为 int 类的子类

>>> issubclass(bool, int)
True

>>> True+1
2
>>> True == 1
True

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接