我注意到,从给定的数字列表构造一个集合以仅包含唯一的数字总是返回一个排序的集合。我读到没有订购一套,所以我在这里错过了什么?
我运行了几次简单的代码,总是打印一个有序列表:
import random
random_list = [random.randrange(1, 100) for i in range(1000)]
print(set(random_list))
答案 0 :(得分:1)
(散列桶的)集合的内部顺序主要由元素的hash
值确定。对于int
个对象n
,它认为
n == hash(n)
因此,集合的内部结构将紧密反映元素的自然顺序。如果对浮点数尝试相同的操作,则会看到不同的行为:
random_list = [random.randrange(1, 100) / 4.0 for i in range(10)]
print(set(random_list))
# {3.5, 4.75, 4.25, 6.25, 5.5, 11.25, 13.25, 16.25, 19.0, 23.75}