1.python语言

Python 语言的实现基于一套精心设计的链接结构,各种复杂对象,甚至 Python 程序等,都基于独立的存储块实现,通过链接相互关联。各种数据对象的表示方式,对相关结构上各种操作的效率有着直接的影响,也间接影响着用 Python 做的程序。理解这些结构,可以帮助我们更有效地使用 Python。

2.常用数据结构

Python 的一些标准数据类型实际上就是非常有用的数据结构:
文本序列类型 str
序列类型 list 和 tuple
集合类型 set 和 frozenset
映射类型 dict

2.1 str-字符串

字符串,类型名 str,不变(immutable)正文序列类型
对象:字符的有穷序列
访问操作:求长度,取成员,取子串(切片),查找子串,判断成员字符类型,等等
基于已有字符串构造新串:改变大小写,拼接,格式化(变换格式),子串替换,切分,等等。都是构造新串

2.2 tuple-元组

元组,类型名 tuple,不变序列类型
对象:任意元素的有穷序列,一个元组的成员可为不同类型的对象
序列的共有操作:成员判断(in, not in),取元素/切片,长度,元素检索/计数,最大/最小,拼接/重复拼接(产生新序列),等
不变序列的唯一特殊操作是 hash,它从任意个不变序列生成一个整数,具体映射方式由系统的实现确定
不变序列可以作为字典的关键码,可作为 set/frozenset 的元素

2.3 list-列表

列表,类型名 list,可变(mutable)序列类型
对象:任意元素的序列
支持所有共有的序列操作
所有可变序列操作(改变被操作的表):元素替换(赋值),切片替换/删除,元素插入/删除,等等

2.4 set 和 frozenset-集合

集合,类型名 set 和 frozenset,分别为可变/不变汇集类型。其元素可以是数值或逻辑对象/字符串/不变序列等,元素值唯一
对象:任意满足条件的元素的汇集
frozenset 支持所有不变集合操作:元素个数,元素判断,集合之间的关系(包含/相交),集合运算(并/交/差/对称差)等
set 还支持可变集合操作:修改集合的运算(并/交/差/对称差),加入/删除元素等
集合的元素只能是不变对象,可求出 hash 值

2.5 dict-字典

字典,类型名 dict,可以看作关键码和值的二元组的集合,其中关键码必须是不变对象
对象:一组关键码到一组值的映射
最基本操作是关键码-值二元组的加入和关键码检索
其他操作:元素个数,关键码存在判断,元素删除(基于关键码),另一些修改字典的操作,等

3.抽象数据类型

抽象数据类型就是基于数据抽象,组织复杂程序的一套思想,用程序里的概念反映真实世界中的概念,在其中组合起与有关概念相关的属性和操作