集合是内部排序的还是显示排序列表的\uuu str\uu方法?

2024-05-14 23:32:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

问题是:这是在什么地方记录下来的(到目前为止还没有找到),是正常的,是可以信赖的吗?你知道吗

额外问题:什么时候分类?在打印过程中?它是内部存储的吗?(考虑到插入的持续复杂性,这是可能的吗?)你知道吗


Tags: addhttp排序过程地方分类itrepl
1条回答
网友
1楼 · 发布于 2024-05-14 23:32:31

这是巧合。数据既没有排序,也没有__str__排序。你知道吗

整数的散列值等于它们的值(除了-1sys.maxint范围之外的长整数),这增加了整数按顺序开槽的可能性,但这不是给定的。你知道吗

set使用哈希表跟踪包含的项,排序取决于哈希值、插入和删除历史。你知道吗

整数和集合之间交互的方式和原因都是实现细节,并且很容易因版本而异。Python3.3为某些类型引入了散列随机化,Python3.4在此基础上进行了扩展,使得集合和字典的排序在Python进程重新启动时也不稳定(取决于存储的值的类型)。你知道吗

相关问题 更多 >

    热门问题