python中二维列表本质是列表的列表,推荐用列表推导式初始化(如 [[0 for in range(4)] for in range(3)]),避免[[0]4]3 导致的浅拷贝问题;也可用嵌套 循环 或直接组合已有行数据。

在 Python 中创建二维列表,本质是“列表的列表”,也就是每个元素本身又是一个列表。最常用、最直观的方式是用列表推导式或嵌套循环初始化。
用列表推导式创建固定大小的二维列表
这是推荐方式,简洁且不易出错(避免引用共享问题):
- 创建 3 行 4 列、全为 0 的二维列表:grid = [[0 for _ in range(4)] for _ in range(3)]
- 等价于手动写:[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
- ⚠️ 注意:不能写成 [[0] * 4] * 3 —— 这会导致三行引用同一个内层列表,修改一行会影响所有行
用嵌套 for 循环动态构建
适合需要根据条件或计算生成元素的场景:
- grid = []
- for i in range(3):
- row = []
- for j in range(4):
- row.append(i * j) # 比如存行列乘积
- grid.append(row)
从已有数据构造(比如读取csv、矩阵输入)
如果已有每行的数据,可直接组合:
立即学习“Python 免费学习笔记(深入)”;
- row1 = [1, 2, 3]
- row2 = [4, 5, 6]
- row3 = [7, 8, 9]
- matrix = [row1, row2, row3] → [[1,2,3], [4,5,6], [7,8,9]]
基本上就这些。关键记住:二维列表不是“内置类型”,而是列表嵌套;初始化时优先用列表推导式,避开 * 重复引发的浅拷贝陷阱。