学一门语言,可以用对比其他语言方法加深对这门语言特点的理解。
一、定义:列表和元组,都是一个可以放置任意数据类型的有序集合。
mutable的列表:动态的,可以改变元素
immutable的元组:静态的,不可以改变元素
二、支持负数索引,支持切片,支持嵌套
切片操作:
list = [1, 2, 3, 4] l[1:3] # 返回列表中索引从 1 到 2 的子列表 (不包含3) [2, 3] tup = (1, 2, 3, 4) tup[1:3] # 返回元组中索引从 1 到 2 的子元组 (不包含3) (2, 3)
接着比较下list 与 tuple的存储空间与执行时间的差异。
三、存储空间差异。
tuple是静态的固定大小的,而list是动态分配存储空间,自动扩容的。
同样的元素,list要存储指向元素的指针与要存储当前长度大小,所以要比tuple占更多的存储空间。例:
l = [1, 2, 3] l.__sizeof__() 64 tup = (1, 2, 3) tup.__sizeof__() 48
四、使用场景
存储数据固定不变的用tuple,如函数返回值
存储数据可变的情况用用list.
参考资料:
极客时间《Python核心技术与实战》专栏