提问人:Habibur Rahman 提问时间:11/2/2023 最后编辑:Mark RotteveelHabibur Rahman 更新时间:11/2/2023 访问量:173
s = {1, True} 是 {1} 和 s = {1, False} 是 {1, False} 为什么?[复制]
s = {1, True} is {1} and s = {1, False} is {1, False} why? [duplicate]
问:
我对python数据结构的以下输出感到困惑。set
# case 1
s = {1, True}
print(s)
# case 2
s = {2, True}
print(s)
# case 3
s = {1, False}
print(s)
# case 4
s = {0, False}
print(s)
输出:
{1}
{True, 2}
{False, 1}
{0}
为什么在情况 1 和 4 中,不打印 True 和 False
我是 Python 编程的初学者。我发现了一个问题“s = {1, True},
它的输出是什么?”然后我尝试了其他情况。
答:
1赞
Goku - stands with Palestine
11/2/2023
#1
True == 1
False == 0
set()
不能有重复的元素。
集合是哈希值的集合。即使语句 1 为 True 也是 False,语句 1 == True 为 True。因此,它们具有相同的哈希值,不能单独存在于一个集合中,并且不能将它们都保留在一个集合中
这是原始问题的链接:Python 集合 1 和 True 的插播
评论
0赞
Markus Meskanen
11/2/2023
True == 1
但不是:-)它们是相同的(),这就是为什么它以这种方式工作的原因。Set 不关心 or ,只关心True is 1
hash()
hash(True) == hash(1) == 1
set()
==
is
hash()
1赞
Markus Meskanen
11/2/2023
@blhsing 感谢您的更正,您是对的,set 两者都使用。
评论
hash(1)
hash(True)
1 == True