一、前言
- 在Python中,元组(Tuple)和列表(List)是两种常用的序列类型;
- 虽然它们在某些方面相似,但在特性和用途上有显著区别。
二、定义方式
- 列表(List):使用方括号 [ ] 定义,元素之间用逗号分隔。
my_list = [1, 2, "apple", True]
- 元组(Tuple):使用圆括号 ( ) 定义,元素之间用逗号分隔。
my_tuple = (1, 2, "banana", False)
single_element_tuple = (5,)
三、可变性(Mutability)
- 列表是可变的(Mutable):支持动态修改(增、删、改元素)
my_list = [1, 2, 3]
my_list.append(4)
my_list[0] = 10
my_list.pop()
- 元组是不可变的(Immutable):创建后不能修改,否则会抛出 TypeError
my_tuple = (1, 2, 3)
my_tuple[0] = 10
四、性能差异
- 元组的创建和访问速度更快
- 由于元组不可变,Python在内存中对其进行了优化。
- 在处理大量数据时,元组的性能略优于列表。
- 列表占用更多内存
- 列表需要额外空间存储指针以支持动态修改,而元组的内存分配是静态的。
五、用途场景
- 列表的典型用途
- 存储需要频繁修改的数据集合(如用户输入、动态配置)。
- 需要调用多种内置方法(如 sort(), reverse())的场景。
tasks = ["read", "write"]
tasks.append("debug")
- 元组的典型用途
- 存储不可变数据(如常量配置、坐标点)。
- 作为字典的键(因为键必须是不可变类型)。
- 函数返回多个值时(如 return (x, y))。
point = (3, 5)
locations = {(1, 2): "A", (3, 4): "B"}
return (res1,res2)
六、内置方法对比
my_list = [3, 1, 2]
my_list.sort()
my_list.reverse()
my_list.insert(0, 10)
- 元组仅有少数方法:仅支持 count( ) 和 index( )
my_tuple = (1, 2, 2, 3)
print(my_tuple.count(2))
print(my_tuple.index(3))
七、其他操作
- 共同支持的操作
- 索引访问:my_list[0] 或 my_tuple[0]。
- 切片操作:my_list[1:3] 或 my_tuple[1:3]。
- 迭代:for item in my_list 或 for item in my_tuple。
- 包含检查:if “apple” in my_list。
- 类型转换:可通过 list() 和 tuple() 相互转换
list_to_tuple = tuple([1, 2, 3])
tuple_to_list = list((1, 2, 3))
八、总结

- 选择建议
- 需要频繁修改数据 → 列表。
- 数据需长期不变或作为哈希键 → 元组。