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++中的数组和列表了。
参考
python源码