跳转到内容

应用编程/列表和元组

75% developed
来自维基教科书,开放世界中的开放书籍

数据结构

[编辑 | 编辑源代码]

什么是数据结构?

[编辑 | 编辑源代码]

一种以高效搜索和检索方式存储数据的方式。不同的数据结构适合不同的问题。一些数据结构对于简单的一般问题很有用,例如检索已使用特定标识符存储的数据。例如,在线字典可以结构化,以便它可以检索单词的定义。另一方面,已经设计了专门的数据结构来解决复杂的特定搜索问题。[1]

观察基本示例是理解数据结构的有效方法。例如,数据结构的一个非常基本的示例是数组,其中多个数据位被协调成一个共享公共标签的组。这有助于程序调用这些数据位或对整个数据集执行其他操作。数据结构的另一个示例是堆栈,它将数据单元放置在相对层次结构中,允许代码函数以协调的方式对数据进行操作,例如将新的数据单元推入堆栈,或从堆栈顶部弹出数据单元。[2]

从一般意义上讲,数据结构的概念与虚拟对象和虚拟现实的概念相吻合。随着数据被开发人员和其他人更精心安排,数据变得更加功能化,从而允许虚拟现实的出现。这是过去几十年许多技术进步的核心概念。[2]

数组数据结构

[编辑 | 编辑源代码]

什么是数组数据结构?

[编辑 | 编辑源代码]

在计算机科学中,数组数据结构,或简称为数组,是一种数据结构,它由元素(值或变量)集合组成,每个元素都由至少一个数组索引或键标识。数组的存储方式使得可以通过数学公式从其索引元组计算出每个元素的位置。最简单的数据结构类型是线性数组,也称为一维数组。数组是最古老和最重要的数据结构之一,几乎每个程序都使用它们。它们还用于实现许多其他数据结构,例如列表和字符串。数组之所以有用,主要是因为可以在运行时计算元素索引。除其他事项外,此功能允许单个迭代语句处理任意多个数组元素。因此,数组数据结构的元素需要具有相同的大小,并且应使用相同的数据表示。[3]

从零开始

索引从 0 开始。数组长度等于数组可以存储的元素数量。从零开始的数组之所以从零开始,是因为与数学相关的原因。不是因为硬件相关的原因。[4]

从一开始

索引从 1 开始。

从 n 开始

数组的基索引可以自由选择。通常允许从 n 开始索引的编程语言也允许负索引值和其他标量数据类型(例如枚举)或字符用作数组索引。

一维

一维数组(或单维数组)是一种线性数组。访问其元素涉及单个下标,该下标可以表示行或列索引。

days_week = ['Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun']
print(days_week[1])

输出

Tues

二维

二维数组是一个数组中的数组。它是数组的数组。在这种类型的数组中,数据元素的位置由两个索引而不是一个索引来引用。因此它表示一个具有数据行和列的表格。[5]

 random_array = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12, 15, 8, 6]]
 print(random_array[0])
 print(random_array[1][2])

输出

[11, 12, 5, 2]
10

元组是一种数据结构,它是一个不可变的或不可更改的元素有序序列。由于元组是不可变的,因此无法修改它们的值。

无法修改

[6]

 t = ('a', 'b', 'c', 'd', 'e')
 t[0] = 'A'
 print(t)

输出

TypeError: 'tuple' object does not support item assignment


一般而言,元组比列表或数组使用更少的内存。


元组允许像列表一样进行切片和索引,但没有用于删除或更改任何元素的方法。

索引

 t = ('a', 'b', 'c', 'd', 'e')
 print(t[1])
 print(t[-1])

输出

b
e

切片

 t = ('a', 'b', 'c', 'd', 'e')
 print(t[1:])
 print(t[:2])
 print(t[1:3])
 print(t[::2]

输出

('b', 'c', 'd', 'e')
('a', 'b')
('b', 'c')
('a', 'c', 'e')

1) 创建一个程序,比较两个列表,如果这些列表至少有一个共同元素,则返回“True”。

2) 创建一个程序,比较两个列表并识别共同元素。显示每个列表中这些共同元素的索引。

3) 创建一个程序,读取一个列表并删除任何连续且重复的元素。例如,["A", "B", "C", "C", "D", "E", "E", "G", "E", "F"] 将变为 ["A", "B", "C", "D", "E", "G", "E", "F"]。

4) 创建一个程序,通过交替来自每个列表的元素,将两个列表合并到一个列表中。例如 ["A", "B", "C"] + ["1", "2", "3"] 将变为 ["A", "1", "B", "2", "C", "3"]。

关键词

[编辑 | 编辑源代码]

数组(列表) - 由元素(值或变量)集合组成的数据结构,每个元素都由至少一个数组索引或键标识。[7]

数据结构 - 数据值的集合,它们之间的关系,以及可以应用于数据的函数或操作。[8]

字段 - 封装在类或对象中的特定数据片段。[9]

哈希表 - 一种存储键值对的数据结构类型。键被发送到一个哈希函数,该函数对它执行算术运算。结果(通常称为哈希值或哈希)是哈希表中键值对的索引。[10]

- 一种专门的基于树的数据结构,满足堆属性:如果 P 是 C 的父节点,则 P 的键(值)要么大于或等于(在最大堆中),要么小于或等于(在最小堆中)C 的键。[11]

索引(键) - 序列中项目的

链表 - 一系列称为节点的元素,每个节点包含一个值并指向列表中的下一个节点(有时也指向上一个节点)。[8]

成员 - 记录中的单个数据;例如,“Person”记录的“Name”字段。[13]

记录(结构体) - 用于收集多个变量的结构,这些变量通常是不同类型并存储为字段。[13]

带标签的联合体 - 包含一个额外字段的联合体,该字段指示当前类型,以增强类型安全性。[8]

元组 - 类似于数组或列表,区别在于它们是不可变的,并用括号括起来。

联合体 - 一种数据结构,其中可以同时存储多个基本类型,类似于结构体或记录。[8]

参考文献

[编辑 | 编辑源代码]
华夏公益教科书