为何Python集合遍历输出的元素顺序始终固定而非随机?
为什么Python集合遍历顺序固定,以及如何实现随机顺序输出
集合的“无序”并非指遍历顺序随机,而是不保证元素的存储/遍历顺序与插入顺序一致,也不支持按索引访问。但对于整数这类哈希值固定的元素,集合的遍历顺序由元素的哈希值决定。整数的哈希值等于自身,所以1-6这几个数在集合中的存储位置是固定的——不管你怎么随机添加,遍历都会按哈希值对应的顺序输出,自然就是固定的顺序。
你的代码最终生成的集合必然是
{1,2,3,4,5,6},这几个元素的哈希值固定,所以遍历顺序不会改变。如果想要输出1-6的随机唯一序列,有更直接的实现方式:
方式一:直接生成随机排列的列表import random nums = random.sample(range(1, 7), 6) for num in nums: print(num)方式二:若一定要用集合,转成列表后打乱顺序
import random my_set = set() while len(my_set) < 6: my_set.add(random.randint(1, 6)) nums_list = list(my_set) random.shuffle(nums_list) for num in nums_list: print(num)
内容的提问来源于stack exchange,提问作者Marián Fedorco
相关产品推荐
相关产品推荐

