集合推导式与print语句输出差异的原因咨询
问题解释
核心原因很简单:Python中的集合(set)是无序容器,它不会维护元素的插入顺序,也不保证任何固定的输出/遍历顺序。
- 你写的两段代码本质上都是创建包含1到9立方数的集合,但集合底层基于哈希表实现,元素的存储位置由哈希值决定,遍历集合的顺序取决于哈希值和哈希表的当前状态(比如是否发生过扩容)。
- 哪怕是同一个集合对象,在不同时机打印或直接显示,都可能出现不同顺序——这不是代码的问题,是集合本身的特性。
- Jupyter中直接返回集合和用
print()打印,只是触发了集合的字符串表示逻辑,但因为集合无序,两次输出顺序不同是完全正常的现象。
你可以多次执行同一段代码(比如反复运行print({i**3 for i in range(1,10)})),会发现每次输出的顺序都可能不一样。
内容的提问来源于stack exchange,提问作者Frozen95
相关产品推荐
相关产品推荐

