集合是无序的,或者说它们的顺序是一个实现细节。我对这个细节很感兴趣。我看到了一个让我惊讶的案例:
print({2, 3, 10})
x = 2
print({x, 3, 10})
输出(在线尝试!):
{3, 10, 2}
{10, 2, 3}
尽管相同的元素以相同的顺序写入,但它们的排序却不同。这是怎么发生的?这是故意为之吗?例如,为了优化查找速度?
我的sys.version
和sys.implementation
:
3.13.0 (main, Nov 9 2024, 10:04:25) [GCC 14.2.1 20240910]
namespace(name='cpython', cache_tag='cpython-313', version=sys.version_info(major=3, minor=13, micro=0, releaselevel='final', serial=0), hexversion=51183856, _multiarch='x86_64-linux-gnu')