Python中列表和元组(减去不变性)之间的区别?

fou*_*ric 8 tuples list python-3.x

我已经知道Python中列表和元组之间的主要区别在于列表是可变的而元组则不是.除此之外,他们可以使用不同的方法,我对列表和元组知之甚少.它们之间还有其他区别吗?在Python 3的列表中使用元组是否有任何优点/缺点(除了不变性)?是否有一个比另一个更快的访问时间,或具有更小的内存大小,或包含更多的方法?他们的内部结构有何不同?或者是一个元组只是一个不可变的列表,仅此而已?

pep*_*epr 7

列表和元组都在内部实现为元素对象的引用数组.这样,两者都可以被索引,并且两个元素都需要相同的内存量.在内部,它们都是同类的(无类型引用).从逻辑上讲,它们都是异构的(自动解除引用,类型绑定到目标对象).

可以修改列表,因此内部数组是动态数组.元组无法修改,因此它在内部只是固定大小的数组.从这个角度来看,元组更简单.

对于哪个更快或更快,您可以使用timeit模块测量具体情况.

您应该意识到元组仅在存储引用的数量和值方面是不可变的.如果(比方说)列表用作元组元素之一,则可以更改列表内容.这样,从逻辑上讲,元组内容不是常量(这样的元组不可清除).

使用任何类型更好的目的.没有严格的偏好.这取决于实际情况.