【发布时间】:2022-01-06 19:03:49
【问题描述】:
在 Python 中对集合调用 iter() 似乎可以对集合进行就地排序。
例子:
>>> my_set = {2, 1, 3}
>>> _ = iter(my_set)
>>> my_set
{1, 2, 3}
我想知道为什么会这样。我想这与在 cPython 中为 set 实现 __iter__ 或 __next__ 的方式有关,但我不确定。
欢迎提出任何想法。
编辑
正如下面的答案和 cmets 所指出的,_ = iter(my_set) 不会改变结果 - my_set 打印“有序”。原因详细解释here。
【问题讨论】:
-
如果你去掉
_ = iter(my_set),你会得到什么? -
iter与它无关,我使用输出{1, 2, 3}的new_set={2,1,3};new_set获得相同的结果。我想这更多地与如何首先构建(无序)集合有关 -
请参阅here 以获得似乎不错的解释;具体来说,关于“定义明确的哈希顺序”的部分。它实际上根本没有得到排序。没有任何顺序的保证,但一组数字可能碰巧看起来是排序的,似乎。他们给出了一个没有得到“排序”的集合的例子 -
{6,7,8,9}打印为{8, 9, 6, 7} -
@RandomDavis:非常感谢您的链接!
标签: python python-3.x set