Python 元组真的需要排序吗?

Do Python tuples really need to be ordered?

我还是 Python 的新手,我已经多次读到 python 元组 本身“有序”的,就像这里W3Schools 网站:https://www.w3schools.com/python/python_tuples.asp。我还注意到 Python 文档没有说明需要“订购”。我尝试创建一个无序元组,这就是我得到的:

我用这条线做了这个:

tup = (2, 8, 3)

所以元组不需要排序?

元组有序不可更改 的集合。 允许重复成员。在 Tuple 中,有序集合意味着 Tuple 确实记录它收到的元素的顺序并按原样存储。不允许更改 position/item 分配。

>>> tup = (2,2,8,3)
>>> tup
(2, 2, 8, 3)

Set 是一个 unorderedunindexed 的集合。 没有重复的成员。 集合,是一个无序集合,意思是集合不记录元素位置或插入顺序。

>>> sample_set = { 2,2,8,3 }
>>> sample_set
{8, 2, 3}

这取决于“有序”的含义。 tuple 是一个不可变序列。它是从其他一些序列或生成器构建的,无论该事物迭代其值的顺序是您在 tuple.

中获得的顺序

因此,tuple 不是排序意义上的排序 - 它只是在构造期间添加项目的时间顺序。

你miss-understood意思ordered。有序文档意味着有关元组中元素顺序的信息存储在数据结构中。不是元组的元素是按排序顺序排列的。

unordered 相反,当有关元素顺序的信息未存储在数据结构中且未保留时,即 unordered 数据结构在将元素存储到内部存储器之前对元素进行排序,因此丢失了有关顺序的信息原始源数据的元素。

您可能认为 ordered 意味着元素在元组内排序,即您可能认为 (3, 7, 9, 15) 是有序的,但 (9, 7, 15, 3) 不是。

元组作为其元素的序列存储在内存中。因此总是 ordered。就像数组也总是有序的。但是有些结构可能不保持元素的顺序,例如让我们用位向量表示一组数字,当且仅当 i 在集合中时,bit(i) == 1,否则位为 0。因此 0 0 1 0 1代表一组数字{2, 4}。这种结构是无序的,这意味着由于表示形式的原因,顺序不会被保留。换句话说unordered意味着它存储在内存中总是排序。