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

问题描述

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

注意!该问题与任何编程语言中的结构实现无关。我只是对纯数据结构(即根据定义)感到好奇。

解决方法

Python中liststuples之间的一个主要区别是tuples是不可变的(即,其中存储的值不能更改),而lists和{{ 1}}是可变的。这可以用这段代码来演示:

arrays

输出:

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

但是用TypeError: 'tuple' object does not support item assignment 做同样的事情:

list

它不会产生任何错误。

这是lst = [[1,2],[3,4]] lst[0][0] = 3 lists之间的主要区别,但还有许多其他区别,例如性能和内存消耗。您可以参考this website来了解更多信息。

,

我认为将arraystupleslists分开的主要区别是存储器中的contiguity及其构成元素的homogeneity。从计算机科学的角度来看,array基本上是一块连续的内存,用于存储相同性质的对象,而listtuple的元素可以位于遥远的内存中,并且性质也可以不同。同样,元组强制其元素的ordering(例如笛卡尔坐标(x,y)),而list本质上是无序的多集事物!

例如,您不能互换坐标的xy字段。但是,如果平面中的区域由一堆点表示,则您不必在意这些点的顺序。根据这些问题中traversingsearching的难易程度,您可以使用不同的数据结构,例如listset甚至tuple(例如顺序很重要,例如多边形顶点的顺时针遍历)!