Arrays 元组作为数据结构是什么?它与列表和数组有何不同?

Arrays 元组作为数据结构是什么?它与列表和数组有何不同?,arrays,list,data-structures,tuples,Arrays,List,Data Structures,Tuples,据我所知,数组是一个不可压缩的索引序列,通常具有同质数据元素,而列表是一个支持异构数据的可调整大小的有序序列。 作为结构或数学模型的元组是元素的有限有序列表(序列)。它与列表或数组有何不同 注意这个问题与任何编程语言中的结构实现无关。我只对纯数据结构感兴趣,即根据定义。python中列表和元组之间的一个主要区别是元组是不可变的(即存储在其中的值不能更改),而列表和数组是可变的。这可以通过以下代码进行演示: tup = ((1,2),(3,4)) tup[0][0] = 3 输出: TypeEr

据我所知,数组是一个不可压缩的索引序列,通常具有同质数据元素,而列表是一个支持异构数据的可调整大小的有序序列。 作为结构或数学模型的元组是元素的有限有序列表(序列)。它与列表或数组有何不同


注意这个问题与任何编程语言中的结构实现无关。我只对纯数据结构感兴趣,即根据定义。

python中
列表
元组
之间的一个主要区别是
元组
是不可变的(即存储在其中的值不能更改),而
列表
数组
是可变的。这可以通过以下代码进行演示:

tup = ((1,2),(3,4))
tup[0][0] = 3
输出:

TypeError: 'tuple' object does not support item assignment
但当对
列表执行相同操作时

lst = [[1,2],[3,4]]
lst[0][0] = 3
它不会产生任何错误


这是
列表
元组
之间的主要区别,但也有许多其他区别,例如性能和内存消耗。你可以参考了解更多。

我认为将
数组
元组
列表
分开的主要区别在于内存中的
连续性
及其组成元素的
同质性。从计算机科学的角度来看,
数组
基本上是一个连续的内存块,用于存储相同性质的对象,而
列表
元组
可以将其元素放在内存中遥远的口袋中,并且具有不同的性质。此外,元组强制执行其元素的
排序
(想想笛卡尔坐标
(x,y)
),而
列表
基本上是一种无序的多集类型的东西


例如,您不能交换坐标的
x
y
字段。但是,如果平面中的一个区域由一组点表示,则不关心点的顺序。根据
遍历
搜索
一组点的难易程度,您可以使用不同的数据结构,如
列表
集合
,甚至
元组
(假设顺序很重要,如多边形顶点的顺时针遍历)

元组是immutable@Sushil
数组
也是不可变的(如果不是说
动态数组
),但是在python中数组是可变的。@Sushil my bad,数组是不可分解的,不是不可变的这回答了你的问题吗?谢谢,但再次强调,我并不暗示语言实现好吧……那么你到底在寻找什么呢?你在解释
Python
实现,这里对我来说没有什么新东西。如果您确实想将我的问题与特定的实现绑定在一起,那么假设我询问的是所有编程语言实现中的公共特性。我想问的是计算机科学中的元组模型,而不是它在PythonOk中是如何工作的……据我所知,元组在所有编程语言中都是不可变的。我认为它们是不确定的,实际上列表是按定义排序的。它并不完全是关于列表元素在内存中的物理位置。
列表
可以是一个
随机访问
结构。我认为这里的主要问题是,所有这些结构都没有很好地定义为纯结构,这会产生混淆!我认为这些基本结构的实际应用是如此深刻,以至于每个人都忽略了它们看似松散的定义!尽管如此,我可能还是错了,一个更抽象的以数学为导向的人可以有更好的发言权!如果你想知道的话。对我来说,似乎我已经发现了足够的东西