鱼C论坛

 找回密码
 立即注册
查看: 157|回复: 3

[已解决]关于集合在打印时位置顺序改变的提问

[复制链接]
发表于 2024-8-1 21:29:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个代码在打印时顺序为什么会改变?
无论是print还是直接x都是这样的。
x={'孙悟空','唐僧','猪八戒','沙和尚'}
type(x)
<class 'set'>
print(x)
{'沙和尚', '唐僧', '猪八戒', '孙悟空'}
x
{'沙和尚', '唐僧', '猪八戒', '孙悟空'}
最佳答案
2024-8-1 21:30:49
集合具有无序性,互异性,里面的元素都是随机排列的,所以每次输出都不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-1 21:29:53 | 显示全部楼层
哎呀,集合(set)这玩意儿就像个性格多变的朋友,今天想穿红衣服,明天又想换成蓝裤子。你看,虽然你给它们安排了顺序,但它们偏偏不按套路出牌。

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

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 21:30:49 | 显示全部楼层    本楼为最佳答案   
集合具有无序性,互异性,里面的元素都是随机排列的,所以每次输出都不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 21:35:51 | 显示全部楼层

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

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

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

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

评分

参与人数 1鱼币 +5 收起 理由
学习编程中的Ben + 5 支持大佬

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表