我有一个set
,我向其中添加了项(int),当我打印它时,这些项显然是被排序的:
a = set()
a.add(3)
a.add(2)
a.add(4)
a.add(1)
a.add(5)
print a
# set([1, 2, 3, 4, 5])
我尝试了各种各样的值,显然它只需要int。你知道吗
我在MacOSX下运行python2.7.5。也可以使用复制(见http://repl.it/TpV)
问题是:这是在什么地方记录下来的(到目前为止还没有找到),是正常的,是可以信赖的吗?你知道吗
额外问题:什么时候分类?在打印过程中?它是内部存储的吗?(考虑到插入的持续复杂性,这是可能的吗?)你知道吗
这是巧合。数据既没有排序,也没有
__str__
排序。你知道吗整数的散列值等于它们的值(除了
-1
和sys.maxint
范围之外的长整数),这增加了整数按顺序开槽的可能性,但这不是给定的。你知道吗set
使用哈希表跟踪包含的项,排序取决于哈希值、和插入和删除历史。你知道吗整数和集合之间交互的方式和原因都是实现细节,并且很容易因版本而异。Python3.3为某些类型引入了散列随机化,Python3.4在此基础上进行了扩展,使得集合和字典的排序在Python进程重新启动时也不稳定(取决于存储的值的类型)。你知道吗
相关问题 更多 >
编程相关推荐