创见博客
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] 反转)

六、核心避坑点(高频错误)

  1. 原地修改方法返回 None: append/pop/sort/reverse 等方法修改原列表,返回 None,不要写:
    python
    lst = [1,2,3]
    lst = lst.append(4)  # ❌ 错误:lst 会变成 None
    
  2. append vs extend 区别:
    • append 加单个元素(包括列表);
    • extend 拆解可迭代对象,逐个加元素;
  3. 浅拷贝的坑: copy()/切片是浅拷贝,嵌套列表修改会相互影响:
    python
    lst = [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% 的列表操作场景。

评论
0/100