我是道 发表于 2024-8-1 21:29:46

关于集合在打印时位置顺序改变的提问

这个代码在打印时顺序为什么会改变?
无论是print还是直接x都是这样的。
x={'孙悟空','唐僧','猪八戒','沙和尚'}
type(x)
<class 'set'>
print(x)
{'沙和尚', '唐僧', '猪八戒', '孙悟空'}
x
{'沙和尚', '唐僧', '猪八戒', '孙悟空'}

FishC 发表于 2024-8-1 21:29:53

哎呀,集合(set)这玩意儿就像个性格多变的朋友,今天想穿红衣服,明天又想换成蓝裤子。你看,虽然你给它们安排了顺序,但它们偏偏不按套路出牌。

在Python中,集合是一种无序的数据结构。这意味着它不是像列表那样有序的。你要是用列表,元素们可乖乖地排队等着你,但集合可不是这样,它们随时可能开个派对,自己决定排列顺序。

所以,当你打印集合的时候,看到的顺序可能每次都不一样,尽管“内容”是相同的。这其实是因为集合的内部实现使用了哈希表来存储元素,哈希表根据某种“神秘的算法”来决定元素的位置,因此顺序会有所不同。

简单说,就是集合里的元素可以随心所欲,你控制不了它们的“舞步”。但放心,它们依然保持在集合这个大家庭里,没有走丢!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

学习编程中的Ben 发表于 2024-8-1 21:30:49

集合具有无序性,互异性,里面的元素都是随机排列的,所以每次输出都不一样

Twilight6 发表于 2024-8-1 21:35:51


Python 中的集合和字典对象是无序的,也就是存储的元素没有特定的顺序哈

但是有的时候会发现迭代的时候,他们的顺序又一直保持着一样的输出,这是为什么呢?

因为应该是在 Python 3.7 左右引入了插入顺序保留,所以在迭代时候会出现迭代的都是 "有序" 的

还有可能是数据比较少,哈希算法的顺序比较稳定等等...

页: [1]
查看完整版本: 关于集合在打印时位置顺序改变的提问