我在python中试验set
,虽然我知道它是unsorted, based on hashes,但我发现奇怪的是,它自动在Python 2和3中对这些数字进行排序。
>>> list(set([2,1,3,6,5,3,6,4]))
[1, 2, 3, 4, 5, 6]
>>> list(set([2,1,3,6,5,3,6,4,0,7]))
[0, 1, 2, 3, 4, 5, 6, 7]
我搜索了一段时间,但没有找到结合这两个功能的答案。
答案 0 :(得分:3)
没有,这是一个例子
In [2]: list(set([1,9,5,10]))
Out[2]: [1, 10, 5, 9]
此外,从文档中:https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset
集合对象是不同的可哈希对象的无序集合。
有时您看到排序后的输出的原因取决于hash
的计算方式,有时取决于所使用的REPL,并且此行为在此answer中得到了很好的描述
ipython
的示例(打印集的方式)在启用doctest_mode(禁用pretty-printing
的{{1}}时更改)
ipython
答案 1 :(得分:0)
这不是集合的功能,仅是集合创建方式的巧合。
列表中各项的哈希值是数字本身。因此,在某些情况下,创建的集合将显示此行为,但绝对不可靠。
查看this answer,您可以了解更多信息。