在 Python 中,列表(list)是一种可变、有序的数据容器。它支持索引、切片、增删改查、拼接等多种操作。

掌握这些基础操作,可以更高效地使用列表。

一、访问与解包

1、解包赋值

基本解包:

a, b, c = [1, 2, 3]
print(a, c)   # 13

带 * 的可变解包:

first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last)  # 1 [2, 3, 4] 5

使用 _ 忽略部分值:

name, _, score = ["Alice", "ID123", 95]
print(name, score)   # Alice 95

2、索引访问

列表是有序的,可以通过下标(索引)访问元素:

lst = [10, 20, 30, 40]

print(lst[0])    # 10,第一个元素
print(lst[-1])   # 40,最后一个元素

2、切片

切片可获取子序列(左闭右开):

lst = [1, 2, 3, 4, 5]

print(lst[1:4])   # [2, 3, 4]
print(lst[:3])    # [1, 2, 3]
print(lst[::2])   # [1, 3, 5]
print(lst[::-1])  # [5, 4, 3, 2, 1] 倒序

3、遍历列表

fruits = ["apple", "banana", "cherry"]

for f in fruits:
    print(f)

# 带索引遍历
for i, f in enumerate(fruits):
    print(i, f)

二、修改与删除

1、直接修改元素

lst = [1, 2, 3]
lst[0] = 10
print(lst)   # [10, 2, 3]

2、切片赋值(批量修改)

lst = [1, 2, 3, 4, 5]
lst[1:3] = [20, 30]     # 替换元素
print(lst)   # [1, 20, 30, 4, 5]

lst[2:4] = []           # 删除元素
print(lst)   # [1, 20, 5]

3、删除操作(del)

lst = [10, 20, 30, 40]

del lst[1]        # 删除索引为 1 的元素
print(lst)        # [10, 30, 40]

del lst[1:3]      # 删除切片
print(lst)        # [10]

三、拼接与重复

a = [1, 2]
b = [3, 4]

print(a + b)   # [1, 2, 3, 4],拼接
print(a * 3)   # [1, 2, 1, 2, 1, 2],重复

# 常见初始化方式
matrix = [[0] * 4 for _ in range(3)]  # 3x4 矩阵
print(matrix)  
# [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

四、复制操作

使用切片进行复制:

lst1 = [1, 2, 3]
lst2 = lst1[:]      # 浅拷贝
lst2[0] = 99

print(lst1)   # [1, 2, 3]
print(lst2)   # [99, 2, 3]

还可使用 .copy() 方法进行浅拷贝,使用 copy.deepcopy() 方法进行深拷贝。

五、成员运算

使用 in 和 not in 判断元素是否存在:

lst = [1, 2, 3]

print(2 in lst)       # True
print(5 not in lst)   # True

六、使用内置函数和方法

1、内置函数

许多内置函数可直接用于列表:

nums = [5, 2, 9, 1]
print(len(nums))     # 4,长度
print(max(nums))     # 9,最大值
print(min(nums))     # 1,最小值
print(sum(nums))     # 17,求和
print(sorted(nums))  # [1, 2, 5, 9],返回新列表,原列表不变

2、list 类的方法

list 类提供了丰富的方法,用于增删改查、排序、拷贝等操作。

详情请参阅:

⚠️常见操作误区

1、索引越界

lst = [1, 2, 3]
# print(lst[5])   # ❌ IndexError: list index out of range

2、拼接错误类型

lst = [1, 2]
# print(lst + 3)   # ❌ TypeError,需要列表才能拼接

3、乘法复制的引用陷阱

matrix = [[0] * 3] * 3
matrix[0][0] = 1
print(matrix)   # [[1, 0, 0], [1, 0, 0], [1, 0, 0]] ❌ 都被修改

原因:三个子列表实际上是同一个对象的引用。

正确做法是使用推导式生成各自独立的子列表:

matrix = [[0] * 3 for _ in range(3)]

小结

列表是 Python 最常用的序列结构之一,熟练掌握这些基础操作是深入学习的前提。

访问操作:索引、切片、遍历

修改操作:直接赋值、切片赋值、del 删除

组合操作:拼接(+)、重复(*)、初始化 [0]*n

复制操作:切片复制 [:]

成员运算:in / not in

内置函数及方法:len()、sum()、max()、min()、sorted() 以及 list 类的方法

点赞有美意,赞赏是鼓励