基础概念:索引与切片
在深入列表和元组之前,先统一一下序列类型的访问方式。Python 使用下标索引来定位元素,索引从 0 开始计数。例如,第一个元素的索引是 0,第二个是 1。此外,Python 还支持负数索引,-1 代表最后一个元素,-2 代表倒数第二个,以此类推。
除了访问单个元素,**切片(slice)**允许我们获取序列的子集。语法为 [start:stop:step],其中 start 包含,stop 不包含,step 是步长(默认为 1)。如果索引越界,Python 会抛出 IndexError 异常。

列表(List):灵活的可变序列
列表是 Python 中最常用的数据结构之一,用方括号 [] 定义。它是有序的、可变的,意味着我们可以随时添加、删除或修改其中的元素。列表中的元素类型可以混合,甚至可以是嵌套的列表。
常见操作
- 访问与修改:通过索引直接读写。
- 添加元素:
append()追加末尾,insert()指定位置插入,extend()合并列表。 - 删除元素:
remove()按值删除,pop()按索引弹出并返回,del语句直接移除。

my_list = [10, 20, 30, 40, 50]
my_list.remove(20) # 删除值为 20 的元素
last_element = my_list.pop() # 弹出最后一个元素
del my_list[1] # 删除索引 1 处的元素

元组(Tuple):固定的有序集合
元组与列表非常相似,但关键区别在于不可变性。一旦创建,元组的内容就不能被修改。它使用圆括号 () 定义。这种特性使得元组更适合存储不需要改变的数据,比如配置项或数据库记录。
常见操作
元组支持索引访问、切片和遍历,但不支持修改、添加或删除操作。尝试修改元组元素会抛出 TypeError。

my_tuple = (1, 2, 3)
# my_tuple[1] = 99 # 报错:'tuple' object does not support item assignment
列表与元组的核心差异
在实际开发中,选择哪种结构主要取决于数据的生命周期需求。
- 可变性:列表可变(mutable),元组不可变(immutable)。这是最根本的区别。
- 语法:列表用
[],元组用()。注意,单元素元组需要加逗号,如(1,)。 - 性能:由于元组不可变,其内存占用更小,访问速度通常比列表稍快。

简单来说,如果你需要频繁修改数据,选列表;如果需要保证数据不被意外篡改,或者作为字典的键,选元组。


