Python中list的常用方法
七崽爱吃小饼干2025/12/17阅读 1
Python 列表(list)是可变有序序列,其内置方法是日常开发/算法刷题的核心,以下按「增、删、改、查、排序/反转、拷贝/清空」六大高频场景分类,附功能说明+示例+使用注意,覆盖 99% 的常用场景:
一、增:向列表添加元素(高频)
| 方法 | 功能 | 示例 | 关键注意 |
|---|---|---|---|
append(x) | 在列表末尾添加单个元素 x(最常用) | lst = [1,2]; lst.append(3) → [1,2,3] | 一次只能加1个元素,可加任意类型(包括列表) |
extend(iter) | 把可迭代对象(列表/字符串/元组)的元素逐个追加到末尾 | lst = [1,2]; lst.extend([3,4]) → [1,2,3,4] | 区别于 append:append([3,4]) 会变成 [1,2,[3,4]] |
insert(i, x) | 在索引 i 位置插入元素 x(i 超出长度则插末尾) | lst = [1,3]; lst.insert(1,2) → [1,2,3] | 插入位置越界不会报错,效率低于 append(需移动元素) |
二、删:从列表删除元素(高频)
| 方法 | 功能 | 示例 | 关键注意 |
|---|---|---|---|
pop(i) | 删除索引 i 位置的元素,返回该元素;无 i 则删最后一个(栈出栈) | lst = [1,2,3]; lst.pop(1) → 返回 2,列表变 [1,3] | 索引越界会报错;是唯一能“删除并返回值”的删除方法 |
remove(x) | 删除第一个出现的元素 x,元素不存在则报错 | lst = [1,2,2,3]; lst.remove(2) → [1,2,3] | 只删第一个匹配项,需遍历列表(效率 O(n)) |
clear() | 清空列表所有元素(变为空列表) | lst = [1,2]; lst.clear() → [] | 原地清空,列表对象本身不销毁 |
del(关键字) | 按索引/切片删除元素(非列表方法,但极常用) | lst = [1,2,3]; del lst[1] → [1,3] | 可批量删除(如 del lst[1:]),无返回值 |
三、改:修改列表元素(高频)
| 方法/语法 | 功能 | 示例 | 关键注意 |
|---|---|---|---|
lst[i] = x | 直接通过索引修改元素(列表可变的核心) | lst = [1,2]; lst[0] = 0 → [0,2] | 索引越界会报错 |
reverse() | 反转列表自身(原地修改,无返回值) | lst = [1,2,3]; lst.reverse() → [3,2,1] | 区别于 reversed(lst)(返回迭代器,原列表不变) |
sort() | 对列表自身排序(原地修改,无返回值) | lst = [3,1,2]; lst.sort() → [1,2,3] | 默认升序;支持 key 自定义排序、reverse=True 降序 |
sort() 高级用法(刷题常用):
python
# 按元素的第二个值排序
lst = [(1,3), (2,1), (3,2)]
lst.sort(key=lambda x: x[1]) # → [(2,1), (3,2), (1,3)]
# 降序排序
lst.sort(reverse=True) # → [(3,2), (2,1), (1,3)]
四、查:查询元素/列表信息(高频)
| 方法/内置函数 | 功能 | 示例 | 关键注意 |
|---|---|---|---|
index(x, start, end) | 返回 x 在 [start, end) 范围内第一个出现的索引,不存在则报错 | lst = [1,2,2,3]; lst.index(2) → 1 | 可指定范围(如 lst.index(2, 2) → 2) |
count(x) | 统计元素 x 在列表中出现的次数 | lst = [1,2,2,3]; lst.count(2) → 2 | 遍历整个列表(效率 O(n)) |
len(lst) | 返回列表长度(元素个数) | lst = [1,2,3]; len(lst) → 3 | 内置函数,非列表方法 |
x in lst | 判断元素 x 是否在列表中(返回布尔值) | 1 in [1,2,3] → True | 遍历判断(效率 O(n)),集合 set 判重更快 |
五、其他常用方法
| 方法 | 功能 | 示例 | 适用场景 |
|---|---|---|---|
copy() | 返回列表的浅拷贝(新列表,修改新列表不影响原列表) | lst = [1,2]; new_lst = lst.copy() → [1,2] | 等价于 lst[:](切片拷贝),更直观 |
__getitem__ | 切片语法(lst[start:end:step]),返回子列表 | lst = [1,2,3,4]; lst[1:3] → [2,3] | 步长 step 可反向切片(如 lst[::-1] 反转) |
六、核心避坑点(高频错误)
- 原地修改方法返回
None:append/pop/sort/reverse等方法修改原列表,返回None,不要写:pythonlst = [1,2,3] lst = lst.append(4) # ❌ 错误:lst 会变成 None appendvsextend区别:append加单个元素(包括列表);extend拆解可迭代对象,逐个加元素;
- 浅拷贝的坑:
copy()/切片是浅拷贝,嵌套列表修改会相互影响:pythonlst = [1, [2,3]] new_lst = lst.copy() new_lst[1][0] = 0 # 原列表也会变 → lst = [1, [0,3]]
刷题/开发高频方法速记
优先掌握:append()、pop()、sort()、reverse()、index()、count()、len()、in,这 8 个方法能覆盖算法题中 90% 的列表操作场景。