mon Asked: 2024-02-23 06:55:51 +0800 CST2024-02-23 06:55:51 +0800 CST 2024-02-23 06:55:51 +0800 CST iter 内置函数是否尽可能对集合元素进行排序?[复制] 772 iter从无序集合生成有序集合,如下所示。这个排序结果是 Python 3 有保证的行为吗? >>> x = {1, 9, 2, 8, 4, 6} >>> y = iter(x) >>> list(y) [1, 2, 4, 6, 8, 9] # <--- Sorted python 1 个回答 Voted Best Answer Tim Peters 2024-02-23T07:04:49+08:002024-02-23T07:04:49+08:00 没有。关于集合的迭代顺序没有任何定义(无论是通过iter(set)orfor e in set:或 ...)。 相反,在一组字符串上尝试,您可能会发现顺序在运行过程中发生变化。 您所看到的是如何hash(int)计算的间接结果,以及它与今天在 CPython 下如何实现集合的交互。 在最近的 PyPy 下,情况有所不同: Python 3.10.12 (af44d0b8114cb82c40a07bb9ee9c1ca8a1b3688c, Jun 15 2023, 15:42:22) [PyPy 7.3.12 with MSC v.1929 64 bit (AMD64)] on win32 ... >>>> x = {1, 9, 2, 8, 4, 6} >>>> y = iter(x) >>>> list(y) [1, 9, 2, 8, 4, 6] 所以原来的订单恰好被保留——这也不能保证。
没有。关于集合的迭代顺序没有任何定义(无论是通过
iter(set)
orfor e in set:
或 ...)。相反,在一组字符串上尝试,您可能会发现顺序在运行过程中发生变化。
您所看到的是如何
hash(int)
计算的间接结果,以及它与今天在 CPython 下如何实现集合的交互。在最近的 PyPy 下,情况有所不同:
所以原来的订单恰好被保留——这也不能保证。