首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我可以在Python中的集合中添加布尔值False而不是True?

为什么我可以在Python中的集合中添加布尔值False而不是True?
EN

Stack Overflow用户
提问于 2018-07-25 03:01:25
回答 2查看 4.5K关注 0票数 37

我刚刚开始研究Python中的set数据类型。由于某些原因,每当我将布尔值True添加到一个集合中时,它就不会出现。但是,如果我将False添加到一个集合中,它将成为集合的一个元素。当我在谷歌上搜索这个问题时,我很震惊,什么都没有出现。

代码语言:javascript
复制
example1 = {1, 2, 7, False}
example2 = {7, 2, 4, 1, True}

print(example1)
print(example2)

输出为:

代码语言:javascript
复制
{False, 1, 2, 7}
{1, 2, 4, 7}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-25 03:04:36

因为在Python 1 == True (和hash(1) == hash(True))中,集合中已经有1了。

想象一下这个例子:

代码语言:javascript
复制
example1 = {0, False, None}
example2 = {1, True}

print(example1)
print(example2)

将输出:

代码语言:javascript
复制
{0, None}
{1}

第一个集合有0None,因为是0 == False而是0 != None。使用第二个集合1 == True,因此不会将True添加到集合中。

票数 41
EN

Stack Overflow用户

发布于 2018-07-25 12:15:38

False和True分别等于0和1。它们是不同的实体,但两个相等的值不能都在一个集合中。这显然是不受欢迎的行为,但还不清楚它是否可以修复,并且仍然允许与布尔值相乘以按照文档说明的方式工作。

代码语言:javascript
复制
IPython 6.2.1 -- An enhanced Interactive Python.

1 is True
Out[1]: False

{1,True}
Out[2]: {1}

{0,False}
Out[3]: {0}

{False, 0}
Out[4]: {False}

{True, 1}
Out[5]: {True}

请注意,根据将它们放入集合的顺序,如果True已经在集合中,则1将不在集合中,如果1已经在集合中,则True将不在集合中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51505826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档