1

列表的概念与查看

列表是 Python 中最常用的数据结构之一,它是一个有序、可变的元素集合,可以存储任意类型的对象。列表用方括号 [] 创建,元素之间用逗号分隔。
每个元素都有一个索引(从 0 开始),也支持负索引(从 -1 开始,表示倒数)。访问不存在的索引会引发 IndexError

索引访问

my_list[index] # 正索引: 0, 1, 2, ... 负索引: -1, -2, -3, ...
输入索引:

切片操作

my_list[start:stop:step] # start 默认 0, stop 默认末尾, step 默认 1
起始: 结束: 步长:
2

增加元素

append() 在末尾追加一个元素(即使传入列表也只算一个);extend() 将可迭代对象中的元素逐个添加;insert() 在指定位置插入元素。三个方法都返回 None,直接修改原列表。
append()
extend()
insert()
追加值:
3

删除元素

remove(x) 删除第一个值为 x 的元素;pop(i) 弹出索引 i 处的元素并返回它;del lst[i] 是语句,按索引删除;clear() 清空整个列表。

remove:
pop:
del:
4

修改与查找

通过 lst[i] = new_val 直接修改元素;index(x) 返回第一个匹配的索引;count(x) 返回出现次数。

查找

值:

修改

索引: 新值:
5

二维列表

二维列表即"列表的列表",可以看作表格或矩阵。通过 matrix[row][col] 访问元素。下面以表格形式展示,你可以直接编辑单元格、增删行列。
6

排序与反转

sort() 就地排序(修改原列表,返回 None);sorted() 返回新列表(原列表不变);reverse() 就地反转。
原列表 / 排序后
7

常见陷阱

陷阱一:append 返回 None

append()extend()insert()sort()reverse() 等方法都是就地修改列表,返回值为 None。如果你把返回值赋给变量,会得到 None 而非修改后的列表。

陷阱二:乘法复制引用问题

[[0]*3]*3 创建的不是 3 个独立的行,而是 3 个指向同一个内层列表的引用。修改一个元素会影响所有行。正确做法是使用列表推导式
错误方式:[ [0]*3 ] * 3
正确方式:列表推导式

小测验

以下代码中,哪个操作会引发 IndexError
fruits = ["apple", "banana", "cherry"]
a = [0, 1, 2, 3, 4, 5],则 a[1:5:2] 的结果是?
执行以下代码后,len(a) 的值是?
a = [1, 2, 3] a.append([4, 5])
执行以下代码后,ab 分别是?
a = [3, 1, 2] b = sorted(a)
以下代码的输出是?
matrix = [[0] * 3] * 3 matrix[0][0] = 1 print(matrix)