有时候我的套装是有序的,有时候不是(Python)

cam*_*han 1 python random set

所以我知道一个集合应该是一个无序列表.我正在尝试对自己做一些编码,结果发生了一些奇怪的事情.我的设置有时会从1到100(当使用更大的数字时),当我使用较小的数字时,它将保持无序.这是为什么?

#Steps:
#1) Take a number value for total random numbers in 1-100
#2) Put those numbers into a set (which will remove duplicates)
#3) Print that set and the total number of random numbers

import random

randomnums = 0

Min = int(1)
Max = int(100)
print('How many random numbers would you like?')
numsneeded = int(input('Please enter a number.            '))
print("\n" * 25)

s = set()

while (randomnums < numsneeded):
    number = random.randint(Min, Max)
    s.add(number)
    randomnums = randomnums + 1

print s
print len(s)
Run Code Online (Sandbox Code Playgroud)

如果有人有任何关于清理我的代码的指示,我100%愿意学习.感谢您的时间!

Gre*_*ill 5

当说明set它的文档是无序集合时,它只意味着你可以假设集合的元素没有特定的顺序.集合可以选择用于保存数据的内部表示,当您要求元素时,它们可能会以任何顺序返回.在某些情况下对它们进行排序的事实可能意味着该集合已选择以排序的方式存储元素.

该集合可以根据诸如集合中的元素数量之类的因素在性能和空间之间做出权衡决策.例如,它可以在列表中存储小集,但在树中存储较大集.从树中检索元素的最自然方式是按排序顺序排列,这样就可以发生在你身上.

另请参阅Python的设置缺失可以被视为随机顺序吗?有关此问题的更多信息.

  • 引自Python2.7`set.py` source:"这个模块使用其值被忽略的字典来实现集合." (2认同)