-
list:有序的线性结构、在内存中排列整齐、可索引、可变、可迭代
-
优势:
-
列表中数据在内存中是一片排列整齐连续区域,且列表可索引 。所以列表查询索引时只需要进行地址偏移。速度极快,其时间复杂度为O(1)
-
列表尾部追加与尾部删除皆不会引起列表数据的整体移动。
-
列表所占据的内存空间比较小
-
有序
-
-
劣势:
-
列表内的数据,在查询时需要遍历整个列表。时间复杂度为O(n)
-
列表在中间执行插入与删除数据时,会引起整个列表当前插入位置后面的所有数据进行移动。
-
当一个列表长度足够长时,使其最初分配的空间不足以满足其连续性时,会引起GC
-
-
-
tuple:有序的线性结构、在内存中排列整齐、可索引、不可变、可迭代
- 优势:
- 元组中数据在内存中是一片排列整齐连续区域,可索引 。所以元组查询索引时只需要进行地址偏移。速度极快,其时间复杂度为O(1)
- 元组一旦创建即不可变。所占据的内存空间不会变化,不会因为元组长度改变而引起GC。
- 有序
- 劣势:
- 查询元组中的数据时,同样需要遍历整个元组。
- 元组中的数据不可变,(元组中有引用对象时,相当于元组记录了这个引用对象的“门牌号码”。所以引用对象改变时,其“门牌号码”不变。元组ID值不变)
- 优势:
-
set:无序、可变、可迭代、在内存中是一个大散列空间、去重
- 优势:
- set中所有数据都是可以hash,hash后存储于一个散列空间。所以查询数据时,只需要将数据hash后去匹配。它的in和 not in操作 ,以及它的增、删操作,其时间复杂度都为O(1)
- set中所有数据都是不重复的
- set可以进行集合运算
- 劣势:
- 只能存储可hash的数据类型
- 创建一个set集合时,同时创建了一片大的散列空间,用以存储数据。但是当set中的数据较少时,浪费内存空间
- 无序
- 优势:
-
dict:无序、可变、可迭代、在内存中是一个大散列空间、key不重复、数据以Key:Value形式存在
- 优势:
- dict的key查询时与set类似。其增、删、改、查操作的时间复杂度都是O(1)
- dict的key都需要hash。故Key唯一。但是相对应的value没有要求,灵活性大
- 劣势:
- 创建一个dict时,同时创建了一片大的散列空间,用以存储数据。但是当set中的数据较少时,浪费内存空间
- 无序
- 优势:
以上均为学习期间个人的学习体会,如有错误,请指正。