在 Python 中,元组 和 列表 是两种常见的序列数据类型。它们的主要区别是:元组 是不可变的,而 列表 是可变的。下面详细介绍两者的常用方法、函数和索引操作。
一、列表(List)
1. 常用方法
1.1 append()
向列表末尾添加单个元素。
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出: [1, 2, 3, 4]
1.2 extend()
将另一个序列(如列表、元组)中的元素添加到列表中。
my_list = [1, 2, 3]
my_list.extend([4, 5])
print(my_list) # 输出: [1, 2, 3, 4, 5]
1.3 insert()
在指定索引位置插入元素。
my_list = [1, 2, 4]
my_list.insert(2, 3) # 在索引 2 处插入 3
print(my_list) # 输出: [1, 2, 3, 4]
1.4 remove()
删除指定值的第一个匹配项。
my_list = [1, 2, 3, 2]
my_list.remove(2)
print(my_list) # 输出: [1, 3, 2]
1.5 pop()
删除指定索引的元素,默认删除最后一个元素。
my_list = [1, 2, 3, 4]
print(my_list.pop()) # 输出: 4
print(my_list) # 输出: [1, 2, 3]
print(my_list.pop(1)) # 输出: 2(删除索引 1 的元素)
print(my_list) # 输出: [1, 3]
1.6 index()
返回指定元素在列表中第一次出现的索引。
my_list = [1, 2, 3, 2]
print(my_list.index(2)) # 输出: 1
1.7 count()
返回指定元素在列表中出现的次数。
my_list = [1, 2, 3, 2, 2]
print(my_list.count(2)) # 输出: 3
1.8 sort()
对列表进行排序。
- 默认升序。
- 可通过
reverse=True
设置为降序。
my_list = [4, 2, 3, 1]
my_list.sort()
print(my_list) # 输出: [1, 2, 3, 4]
my_list.sort(reverse=True)
print(my_list) # 输出: [4, 3, 2, 1]
1.9 reverse()
反转列表中的元素顺序。
my_list = [1, 2, 3]
my_list.reverse()
print(my_list) # 输出: [3, 2, 1]
1.10 copy()
返回列表的浅拷贝。
my_list = [1, 2, 3]
copy_list = my_list.copy()
print(copy_list) # 输出: [1, 2, 3]
1.11 clear()
清空列表。
my_list = [1, 2, 3]
my_list.clear()
print(my_list) # 输出: []
2. 列表的索引和切片
- 正向索引:从 0 开始计数。
- 反向索引:从 -1 开始计数。
- 切片:通过
[start:stop:step]
获取子列表。
my_list = [10, 20, 30, 40, 50]
# 索引
print(my_list[0]) # 输出: 10
print(my_list[-1]) # 输出: 50
# 切片
print(my_list[1:4]) # 输出: [20, 30, 40](索引 1 到 3)
print(my_list[:3]) # 输出: [10, 20, 30](从开始到索引 2)
print(my_list[::2]) # 输出: [10, 30, 50](每隔一个元素)
print(my_list[::-1]) # 输出: [50, 40, 30, 20, 10](逆序输出)
二、元组(Tuple)
1. 常用方法
元组是不可变的,方法相对较少,主要有以下几个:
1.1 count()
返回指定元素在元组中出现的次数。
my_tuple = (1, 2, 3, 2, 2)
print(my_tuple.count(2)) # 输出: 3
1.2 index()
返回指定元素在元组中第一次出现的索引。
my_tuple = (1, 2, 3, 2)
print(my_tuple.index(2)) # 输出: 1
2. 元组的索引和切片
与列表类似,元组也支持正向索引、反向索引和切片操作。
my_tuple = (10, 20, 30, 40, 50)
# 索引
print(my_tuple[0]) # 输出: 10
print(my_tuple[-1]) # 输出: 50
# 切片
print(my_tuple[1:4]) # 输出: (20, 30, 40)
print(my_tuple[::2]) # 输出: (10, 30, 50)
print(my_tuple[::-1]) # 输出: (50, 40, 30, 20, 10)
三、列表与元组的转换
可以使用 list()
和 tuple()
进行互相转换。
# 列表转换为元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple) # 输出: (1, 2, 3)
# 元组转换为列表
my_tuple = (1, 2, 3)
my_list = list(my_tuple)
print(my_list) # 输出: [1, 2, 3]
四、总结
操作 | 列表(List) | 元组(Tuple) |
---|---|---|
可变性 | 可变 | 不可变 |
常用方法 | append() , extend() , insert() 等 | count() , index() 等 |
索引 | 支持正向和反向索引 | 支持正向和反向索引 |
切片 | 支持 | 支持 |
转换 | 可通过 tuple() 转换为元组 | 可通过 list() 转换为列表 |
列表 提供更多操作方法,适用于需要频繁修改数据的场景;而 元组 适合数据内容固定、只需读取的情况。