1
列表的概念与查看
列表是 Python 中最常用的数据结构之一,它是一个有序、可变的元素集合,可以存储任意类型的对象。列表用方括号
每个元素都有一个索引(从 0 开始),也支持负索引(从 -1 开始,表示倒数)。访问不存在的索引会引发
[] 创建,元素之间用逗号分隔。每个元素都有一个索引(从 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])执行以下代码后,
a 和 b 分别是?a = [3, 1, 2]
b = sorted(a)以下代码的输出是?
matrix = [[0] * 3] * 3
matrix[0][0] = 1
print(matrix)