python数据结构及底层分析


1.Python中的数据结构类型

#1.1	List列表  线性表
[]定义,增删查改
#1.2.Tuple元组  只读列表 元素不可变  元素内容也不可变
#()定义,查找
t1=(1,2,3,4)
print(t1[0])

#3.Set集合 元素唯一,不可重复的列表
#{}定义,增删查改
#用 in 来判断是否在集合s1里
s1 = {1,2,3,4}


#4.Dict字典 存储 键值对key-value
#{}定义,增删查改
d1={'Lucy':67,'Tom':89}
d1['Lucy']
d1['Lucy']=100
'Lucy' in d1
'xiaoming'  in  d1

2.Python数据结构类型内部分析

数据结构:链表,数组,二叉树,哈希,图

2.1 List列表底层是链式存储还是数组存储

头部插入
在这里插入图片描述
尾部插入
在这里插入图片描述
测试时间差:
在这里插入图片描述
结论:列表采用数组存储结构
数组
尾部插入:时间复杂度O(1);
头部插入:时间复杂度O(n)
头部插入需要先让元素后移再进行插入操作
在这里插入图片描述
链表
在这里插入图片描述
头插法
在这里插入图片描述
尾插法
在这里插入图片描述

2.2 Set集合底层什么数据结构

代码测试1:
创建一个100万个数的集合(0-999999),然后通过for循环判断499999是否在集合里,做查找操作,查找一百次
在这里插入图片描述
代码测试2:
同上,只不过测试对象换成列表
在这里插入图片描述
测试结果(取近似):
集合查找时间:10us
列表查找时间:1s
在这里插入图片描述
结论:Python中Set集合采用哈希结构:时间复杂度O(1)

列表查找(数组查找)与集合查找(哈希查找)对比:
数组查找,挨个询问-------------》O(n)
哈希查找,哈希函数-------------》O(1)
在这里插入图片描述
补充:树形结构
在这里插入图片描述

2.3 Dict字典底层是什么数据结构

Dict和Set是一样的,都是hash结构只不过是加了一个数值而已


总结

数据结构很重要,一定要多敲代码!!!

猜你喜欢

转载自blog.csdn.net/HG0724/article/details/112210149