内置数据结构
- 可变
- list 列表
- byterray
- dict 字典
- set 集合
- 不可变
- tuple 元组
- bytes
- 常量(int,str,bool 等)
list 列表 (推荐使用索引)
列表相当于一个排列整齐的队列,可以理解为在内存中是一片排列整齐的连续的空间,它是可索引,可变的,有序的,线性结构,可迭代。
优点:
通过索引(index)查找、替换元素 效率高 时间复杂度O(1)。
尾部追加(append)与 尾部移除(pop)元素快 效率高 时间复杂度O(1)。
缺点:
从中间增加或移除元素会使列表元素整体挪动 效率低。
因为是连续空间1,如果一次开辟空间较大,内存连续空间不够时,会触发GC进行垃圾回收。
tuple 元组(推荐使用索引)
元组在内存中可以理解为与列表相似 , 他是可索引的,不可变的,有序的,线性结构,可迭代。
优点:
通过索引查找元素 时间复杂度为O(1)。
缺点:
元组是不可变的,是只读的,不能修改。
set 集合
set在内存中是散落的,不连续的,不可索引 ,他是 去重的 可变的 无序的 可迭代 可hash。
优点:
通过数值查询元素是否在集合中(使用hash) 时间复杂度O(1)。
增加元素(add)时间复杂度O(1)
可以使用集合运算(并集 | 、交集 & 、对称差集 ^ ,还可用 < , > 判断子集 超集)。
缺点:
不能使用索引,不能放置内容相同的元素,不能放不可hash的元素(list,set,dity)。
dity 字典
dity在内存中是散落的,不连续的,会预留散列空间 。 无序的 可变的 可迭代 key是去重的、可hash。
优点:
通过数值查询快(使用hash) 时间复杂度O(1)。
增加kv对 时间复杂度O(1)。
移除kv对(pop) 时间复杂度O(1)。
缺点:
不能使用索引,不能放置内容相同的元素,不能放不可hash的元素(list,set,dity)。
相对于list来说,内存占用较大。
原文地址:http://blog.51cto.com/13886948/2161448