Python3 列表
Python3 学习笔记 · 整理自菜鸟教程
一句话
列表(list)是有序、可变、可重复、可混合类型的序列,用方括号 [] 定义,是 Python 最常用的容器。
要点
- 有序 + 可变:元素按插入顺序排列,可增删改;支持索引、切片、拼接。
- 可异构:同一列表可放不同类型,甚至嵌套列表。
- 索引/切片:与字符串一致,左闭右开;切片返回新列表(浅拷贝)。
- 增删改查:
append/extend/insert增;remove/pop/del/clear删;a[i] = x改。 - 排序:
sort()原地排序,sorted()返回新列表;reverse()原地反转。 - 引用语义:
b = a是别名(同一对象);b = a.copy()或a[:]才是浅拷贝。
语法 / 常用方法
| 语法/方法 | 说明 | 示例 |
|---|---|---|
lst[i] / lst[a:b] |
索引 / 切片 | [1,2,3][1:] → [2,3] |
lst.append(x) |
末尾追加一个元素 | a.append([4,5]) 追加嵌套列表 |
lst.extend(iter) |
末尾逐一追加可迭代对象元素 | a.extend([4,5]) |
lst.insert(i, x) |
在下标 i 前插入 x | [1,3].insert(1,2) → [1,2,3] |
lst.remove(x) |
删除第一个值为 x 的元素 | 找不到报 ValueError |
lst.pop([i]) |
删除并返回下标 i(默认末尾) | a.pop() 弹最后 |
lst.clear() |
清空所有元素 | a.clear() → [] |
del lst[i] |
删除下标 i 的元素(语句) | del a[0] |
lst.index(x) |
返回首个 x 的下标 | 找不到报 ValueError |
lst.count(x) |
x 出现次数 | [1,1,2].count(1) → 2 |
lst.sort(key=, reverse=) |
原地排序 | a.sort(reverse=True) |
lst.reverse() |
原地反转 | [1,2].reverse() → [2,1] |
lst.copy() |
浅拷贝 | 等价 lst[:] |
len(lst) |
元素个数 | len([1,2,3]) → 3 |
x in lst |
是否包含 | 2 in [1,2] → True |
lst1 + lst2 |
拼接成新列表 | [1] + [2] → [1,2] |
lst * n |
重复 n 次 | [0] * 3 → [0,0,0] |
sorted(lst) |
返回排序后的新列表 | 原列表不变 |
lst[a:b] = iter |
切片赋值(可改长度) | a[1:3] = [9] |
代码示例
1 | |
易错点
appendvsextend:append([4,5])把整个列表当一个元素;extend([4,5])逐个加。b = a是别名:改b会改a;要独立副本用a.copy()、a[:]或list(a)。- 浅拷贝的坑:嵌套列表只复制外层,内层仍共享,深拷贝用
copy.deepcopy()。 remove按值删,只删第一个;按下标删用pop(i)或del。sort()返回 None:a = a.sort()会把a变成None,别接返回值。- 遍历时增删:边
for边remove会跳元素,改用推导式或倒序遍历。 - 切片越界不报错,但索引越界报
IndexError。 - 混合类型排序会报错:
[1, "a"].sort()抛TypeError(不可比较)。