![](/img/trans.png)
[英]Why list(set(a+b)) returns ordered list? And is it always returns an ordered list?
[英]Why is the output of a set constructed from a list of random numbers always ordered?
我注意到从给定的数字列表构造一个集合以只包含唯一的数字总是返回一个排序的集合。 我读到没有订购一套,所以我在这里错过了什么?
我运行了几次这个简单的代码,总是打印一个有序列表:
import random
random_list = [random.randrange(1, 100) for i in range(1000)]
print(set(random_list))
集合的内部顺序(散列桶的)主要由元素的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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.