list
List 列表
特性:动态数组、切片复制、原地修改、常用 API。
时间复杂度与扩容
- 末尾
append/pop摊还 O(1);插入/删除中间 O(n); - 扩容按比例增长,避免频繁扩容可用
list.extend预填充或一次性构建。
切片与拷贝
- 切片返回新列表:
b = a[:]; - 浅拷贝:
list(a)/a.copy();深拷贝:copy.deepcopy(a)。
常见陷阱
- 可变默认参数:
def f(x=[]): ... # 反例
def f(x=None):
if x is None: x = []
- 乘法复制的共享:
[[0]*3]*2行共享同一子列表;应使用列表推导:[[0 for _ in range(3)] for _ in range(2)]。