set的输出结果是按什么自动排序的

来源:4-5 set 集合

Di八哥

2017-12-16

在IDLE里,如输入{1,2,"a","b",4},按回车后会输出{1, 2, 'b', 4, 'a'},如输入{"a","b","x","c"}的时候,回车会输出{'x', 'b', 'c', 'a'},但输入{1,5,4,7,3},按回车会输出{1, 3, 4, 5, 7}

写回答

1回答

hgkgfghft

2017-12-18

set是无序集合,不会自动排序的

如果你非要理解它的原理,你可以看下知乎大神的回答

https://www.zhihu.com/question/38237135

python中的“无序”set是和其他用平衡二叉树实现的set(如c++中用红黑树实现的set和python中的orderedset)相对而言的。

基于平衡二叉树的set存取操作都是O(lgn)的时间,但是由于二叉搜索树的特点,可以很轻松的找到任意节点的前驱和后继节点,所以算是“有序”的。

而python中的set基于哈希表实现,存取时间可看做O(1),但是没有办法高效的完成顺序相关的操作(比如找前驱后继,最大最小值等等),所以认为是“无序”的。



作者:黄立夫
链接:https://www.zhihu.com/question/38237135/answer/75502166
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


0
1
Di八哥
非常感谢!
2017-12-19
共1条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14598 学习 · 4470 问题

查看课程