(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++中的数组和列表了。
网友评论