如果没有定义顺序,Python如何迭代一个集合?

5

我注意到在Python中我们说集合没有顺序或排列,尽管当然你可以对从集合生成的列表进行排序。

所以我想知道在Python中如何定义对集合的迭代。它只是遵循排序后的列表顺序,还是会出现其他可能导致问题的情况?

谢谢。


1
可能是重复的问题(有点过时):Python无序集合的“顺序”问题。 - wim
2
一个集合没有顺序;集合迭代器强制(任意)一个顺序。无论你看到什么顺序,都是实现细节,不应该依赖它。 - chepner
1
Python这门编程语言本身并没有涉及到这个问题。如果你想了解CPython,那么这基本上只是一个“阅读源代码”(RTFS)的问题。 - wim
1
从开发者的角度来看,集合没有顺序。但是在内存中有一个顺序,通常由用于键入集合的哈希定义。这个顺序可以用于迭代集合。具体实现方式可能因解释器甚至版本而异。 - Klaus D.
@wim 或者更具体地说,大部分魔法都发生在这里。基本上,它们使用索引和while循环遍历内部表格,跳过NULL和DUMMY条目。 - juanpa.arrivillaga
1个回答

3

临时订购被用来迭代set,但你不能可靠地预测它(实际上,这取决于set的插入和删除历史)。如果你需要特定的顺序,请使用list


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接