Python 集合元素排序揭秘
Python 中的集合是无序集合,但某些模式以其显示顺序出现。尽管看起来很一致,但这个顺序是由 Python 的哈希机制产生的。
哈希和内存放置
Python 对每个元素进行哈希处理,并将哈希值的最后 N 位用作数组内存放置索引。因此,内存中元素的顺序决定了它们的显示顺序。
冲突解决
当两个元素具有相同的哈希值时,冲突解决机制会将它们放置在备用内存位置。元素插入的顺序(如果只有一个元素或多个具有相同哈希值的元素)会影响元素在内存中的确切位置。
示例
中在以下示例中,由于冲突解决,打印集中元素的顺序是一致的:
set_1 = set([5, 2, 7, 2, 1, 88]) set_1 # set([88, 1, 2, 5, 7]) set_2 = set([8, 16, 24]) set_2 # set([8, 16, 24])
请注意更改输入中的插入顺序如果存在按键冲突,列表可能会改变显示顺序。例如:
set_3 = set([24, 16, 8]) set_3 # set([24, 16, 8])
唯一哈希和顺序保留
如果元素具有唯一哈希值,则保留插入顺序:
set_4 = set([1, 2, 3]) set_4 # set([1, 2, 3])
注意:
所描述的实现适用于CPython的dict和set,在某些版本中可能有所不同。然而,散列和内存放置的一般原理保持不变。
以上是为什么 Python 的 Set 以看似有序的方式显示元素?的详细内容。更多信息请关注PHP中文网其他相关文章!