python中元组(tuple)和列表(list)的区别

一、前言

  想必大家都知道,在Python数据类型中有两个对象:元组 tuple 和列表 list 。

  它们的写法和用法都十分相似,傻傻分不清楚。可能有的同学就会疯狂的去网上查找它们之间的区别了,可是查到的无外乎有以下几种说法:

  list 是可变的对象,元组 tuple 是不可变的对象!

  由于 tuple 不可变,所以使用 tuple 可以使代码更安全!等等 …

  下面我们来分析list和python的区别


二、List列表

list是一种有序的集合,可以随时添加删除其中的元素

列出数组num中的所有元素:
python中元组(tuple)和列表(list)的区别
使用append()函数可以在其末尾添加元素:
python中元组(tuple)和列表(list)的区别
insert()函数可以将元素插入添加到指定位置:
如在第二个索引位置加上‘q’这个元素。
python中元组(tuple)和列表(list)的区别
使用pop()可以删除list最后一个元素

使用pop(i)其中i是索引号,可以删除指定位置的元素。
python中元组(tuple)和列表(list)的区别index()函数,查找列表中的元素,返回是它的索引值
python中元组(tuple)和列表(list)的区别
list里面的元素类型可以不同,不仅如此,它的元素还可以是另一个list :
python中元组(tuple)和列表(list)的区别


三、tuple元组

tuple是一种有序列表,它和list非常相似,但是(但是前面的话也不都是废话)

tuple一旦初始化就不能修改,而且没有append() insert()这些方法,可以获取元素但不能赋值变成另外的元素
python中元组(tuple)和列表(list)的区别
如果创建一个空元组,直接使用小括号即可;

如果要创建的元组中只有一个元素,要在它的后面加上一个逗号‘,’。
python中元组(tuple)和列表(list)的区别
(1)这个代表的数字1,是个数,不是元组
python中元组(tuple)和列表(list)的区别
tuple()函数将列表转化为元组
python中元组(tuple)和列表(list)的区别


四、tuple和list之间的差异

tuple是静态的固定大小的,而list是动态分配存储空间,自动扩容的。

同样的元素,list要存储指向元素的指针与要存储当前长度大小,所以要比tuple占更多的存储空间。例:
python中元组(tuple)和列表(list)的区别


五、结论

相对于 list 而言,tuple 内的元素是不可变的。

tuple 放弃了对元素的增删(内存结构设计上变的更精简),换取的是性能上的提升:**创建 tuple 比 list 要快,存储空间比 list 占用更小。**所以就出现了“能用 tuple 的地方就不用 list”的说法。

用 Tuple 的好处

Tuple 比 list 操作速度快。如果您定义了一个值的常量集,并且唯一要用它做的是不断地遍历它,请使用 tuple 代替 list。

如果对不需要修改的数据进行 “写保护”,可以使代码更安全。使用 tuple 而不是 list 。