01_列表
列表
初始化与创建
# 自动初始化为全0
a = [0] * n
# 二维列表(注意:不能用 [[0]*m]*n,是浅拷贝!)
grid = [[0] * m for _ in range(n)]
# 列表推导式
squares = [x * x for x in range(n)]
evens = [x for x in range(n) if x % 2 == 0]
# 基本格式: [表达式 for 变量 in 可迭代对象 if 条件]
# 示例: 读取 q 行整数
S_list = [int(input()) for _ in range(q)]增删改操作
# 尾部操作(O(1))
a.append(x) # 尾部添加
a.pop() # 尾部删除
# 头部操作(O(n),慎用!)
a.insert(0, x) # 头部插入
a.pop(0) # 头部删除
# 任意位置
a.insert(i, x) # 在位置 i 插入
a.pop(i) # 删除位置 i 的元素
a.remove(x) # 删除值为 x 的第一个元素
# 批量操作
a.extend([1, 2, 3]) # 追加多个元素
a += [1, 2, 3] # 同上
a.clear() # 清空列表查询操作
# 最大/最小值
mx = max(a)
mn = min(a)
idx = a.index(max(a)) # 最大值的索引
# 统计
a.count(x) # 元素 x 出现的次数
len(a) # 列表长度
# 检查存在
x in a # O(n) 操作,频繁查询建议用 set
x not in a
# 查找索引
a.index(x) # 返回第一个 x 的索引,不存在会报错
a.index(x, start, end) # 在指定范围内查找
# 累加求和
sum(a)
# enumerate - 同时获取索引和值
for i, val in enumerate(arr):
print(f"索引 {i}: 值 {val}")
# 2. zip - 并行遍历多个列表
for a, b in zip(list1, list2):
print(a, b)排序操作
# 原地排序
a.sort() # 升序
a.sort(reverse=True) # 降序
# 返回新列表
b = sorted(a)
b = sorted(a, reverse=True)
# 多关键字排序
a.sort(key=lambda x: (-x[0], x[1])) # 第一项降序,第二项升序
# 多列表打包排序(同步排序)
x = [3, 1, 2]
y = ['c', 'a', 'b']
sorted(zip(x, y)) # → [(1, 'a'), (2, 'b'), (3, 'c')]切片与反转
# 切片(不修改原列表)
a[start:end] # [start, end),左闭右开
a[start:end:step] # 带步长
a[::-1] # 反转
a[::2] # 隔一个取一个
a[-1] # 最后一个元素
a[-3:] # 最后三个元素
# 反转(修改原列表)
a.reverse() # 原地反转
a = a[::-1] # 创建新列表01_列表
https://mingsm17518.github.io/2026/09/14/算法学习/01_数据结构/01_列表/