python中list的底层实现

  这里不讨论具体的实现细节,主要是转载这篇文章: 顺序表的原理与python中的list类型

原文就不贴过来了,总结一下:

  1. 确定数据类型的意义在于确定一个数据在内存中占据的空间大小以及如何解释一段内存的含义;
  2. 同类型数据在内存中连续存储时采用固定的偏移量来定位;
  3. 不同类型数据需要采用元素外置的方式,在顺序表里面只存储外置元素的指针;
  4. 顺序表需要保存【容量】以及【已占用】数据,这个“表头”可以放在顺序表中,也可以分离出来;
  5. 当顺序表的容量不够或者过多时,会自动扩容或者缩容。

再回到作者的结论:

list有以下几个特点:

1.元素有位置下标,以索引就可以直接取到元素  -->  连续的存储空间,以偏移量计算取得元素,不必遍历所有元素

2.元素无论如何改变,表对象不变,也就是其id不变  -->  分离式结构,表头和元素内容分开储存,这样在更改list时,表对象始终是同一个,只是其指向的地址不同

3.元素可以是任意类型  -->  既要要求是连续存储,又可以存储不同类型的数据,那么其用的就是元素外置的方式,存储的只是地址的引用

4.可以任意添加新元素  -->  要能不断地添加新元素,其使用了动态扩充的策略

 

转载于:https://www.cnblogs.com/tlz888/p/10192243.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值