1 线性表
- 一组元素序列的抽象
1.1 顺序表
- 内存中开辟一块空间连续存储,物理存储也连续
- 有序,可插队离队,队尾增删效率还行,如果在队首或者队中增删会引起大量数据挪动,效率低
- 索引效率高 O(1)
1.2 链接表
- 物理存储不连续,通过指针将链表连接起来
- 有序,类似小朋友手拉手,可插队离队
1.3 其他应用
- 栈 通过顺序表来实现
- 堆 顺序表和链表皆可实现
2 列表 list
- 可变
- 元素可以是任意对象(数字、字符串、对象、列表等)
- 可索引 O(1)
- 列表复制为浅拷贝
3 元组 tuple
- 有序的元素集合
- 不可变
4 字符串 str
- 一个个字符组成的有序的序列,是字符的集合(python没有char的概念,字符串拆开还是字符串)
- 不可变对象,是字面常量
5 字节序列
- bytes不可变字节序列
- bytearray是可变字节数组
6 ASCII表
- \x00 NULL 是ASCII表中第一项,C语言中的字符串结束符
- \t \x09 9 表示tab字符
- \n \x0a 10 换行
- \r \x0d 13 回车
- \x30~\x39 字符0~9,\x31是字符1
- \x41对应十进制65,表示A
- \x61对应十进制97,表示a
7 集合 set
- 可变的、无序的、不重复
7.1 元素性质
- 去重:在集合中,所有元素必须相异
- 无序:因为无序,所以不可索引
- 可哈希:Python集合中的元素必须可以hash,即元素都可以使用内建函数hash
- 可迭代:set中虽然元素不一样,但元素都可以迭代出来
7.2 不可哈希对象
list、set、bytearray、dictionary
set元素必须是可hash的
7.3 可哈希对象
数值型int、float、complex
布尔型True、False
字符串string、bytes
tuple
None
以上都是不可变类型,称为可哈希类型,hashable
7.4 遍历
只要是容器,都可以遍历,效率都是O(n)