python列表,字典底层实现

2020-06-29  本文已影响0人  葡萄柚子茶

(Python列表:初学者应该懂得操作和内部实现 )[https://mp.weixin.qq.com/s/IkFak4iYYqW7u61P7eu22g]
(Python字典的核心底层原理讲解)[https://www.jb51.net/article/155269.htm]
list是由对其他对象的引用组成的数组,列表的头结构包含指向引用数组的指针和长度
pop取出元素后,还是可以使用取出的元素的,因为引用的没有变

很多人说tuple比list快,真的如此吗?
Python代码

size = 1000000  

a = []  
for i in xrange(0, size):  
    a.append(i)  
b = tuple(a)  

for t in xrange(0, 32):  
    sum = 0  
    for e in b:  
        sum += e  

分别遍历list和tuple,跑得的时间是6.925s和6.771s
从实测看来,这个结论是不明显的。
list和tuple在c实现上是很相似的,对于元素数量大的时候,
都是一个数组指针,指针指向相应的对象,找不到tuple比list快的理由。
但对于小对象来说,tuple会有一个对象池,所以小的、重复的使用tuple还有益处的。
为什么要有tuple,还有很多的合理性。
实际情况中的确也有不少大小固定的列表结构,例如二维地理坐标等;
另外tuple也给元素天然地赋予了只读属性。
认为tuple比list快的人大概是把python的tuple和list类比成C++中的数组和列表了。

上一篇 下一篇

猜你喜欢

热点阅读