python数据结构及底层分析

文章目录

  • 1.Python中的数据结构类型
  • 2.Python数据结构类型内部分析
    • 2.1 List列表底层是链式存储还是数组存储
    • 2.2 Set集合底层什么数据结构
    • 2.3 Dict字典底层是什么数据结构
  • 总结


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列表底层是链式存储还是数组存储

头部插入
python数据结构及底层分析_第1张图片
尾部插入
python数据结构及底层分析_第2张图片
测试时间差:
在这里插入图片描述
结论:列表采用数组存储结构
数组
尾部插入:时间复杂度O(1);
头部插入:时间复杂度O(n)
头部插入需要先让元素后移再进行插入操作
python数据结构及底层分析_第3张图片
链表
python数据结构及底层分析_第4张图片
头插法
python数据结构及底层分析_第5张图片
尾插法
python数据结构及底层分析_第6张图片

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

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

列表查找(数组查找)与集合查找(哈希查找)对比:
数组查找,挨个询问-------------》O(n)
哈希查找,哈希函数-------------》O(1)
python数据结构及底层分析_第9张图片
补充:树形结构
python数据结构及底层分析_第10张图片

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

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


总结

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

你可能感兴趣的:(Python基础及应用,python,数据结构)