Python中Set的迭代顺序在未修改前是否始终保持稳定?
Python中集合(set)在修改前的迭代顺序是否保持不变?
Python里的set是可变的无序集合,底层基于哈希表实现。和同样用哈希表实现的dict不同——自Python 3.7起,字典的迭代顺序被固定为插入顺序,但集合没有这个官方保证。
不过针对核心疑问:在未显式修改集合的代码执行过程中,Python解释器不会对该集合进行内部重哈希或重新分配操作。在程序的单次运行里,只要集合没有被增删元素,不管集合大小如何,多次迭代的顺序都是稳定一致的。
比如下面的代码,断言会始终成立:
s = {1, 4, 3, 5} iter_result = [i for i in s] # 执行其他不修改该集合的代码 assert [i for i in s] == iter_result # 单次运行中始终成立
内容的提问来源于stack exchange,提问作者SLebedev777
相关产品推荐
相关产品推荐

