Python中iter内置函数是否会排序集合元素?无序集合迭代有序是否为Python3保证行为?
关于Python内置函数
iter的迭代顺序问题 问题1:Python的内置函数iter是否会在任何可能的情况下对集合元素进行排序?
- 不会。
iter的作用仅为返回对应对象的迭代器,它不会对元素做任何排序处理,迭代顺序完全由被迭代对象自身的迭代规则决定。比如列表按插入顺序迭代,集合在Python3.7+按插入顺序迭代(旧版本无固定顺序),但这些规则和“排序”没有关联。
问题2:示例中iter从未排序的集合生成了有序结果,这是不是Python3的保证性行为?
- 这完全是巧合,不是Python3的保证性行为。
- 你看到的排序结果只是因为示例里的集合元素插入顺序刚好和升序一致,换一组元素就能验证:
>>> x = {3, 1, 4, 15, 9} >>> list(iter(x)) # Python3.7+输出为 [3, 1, 4, 15, 9](按插入顺序),旧版本可能是任意顺序,绝不会是排序后的结果 - 补充说明:Python3.7及以后版本中,集合的迭代顺序被规定为元素的插入顺序,但这和排序没有任何关系,只是保留了元素被添加进集合的先后顺序。
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

