You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中初始化行列可变的2D list(二维列表)

Python 实现行列动态可变二维列表的方案

你之前查到的a1 = [[] * (some integer)] * [(some integer)]写法本身存在两个问题:

  1. 初始化后行列数固定,无法灵活扩展
  2. 本质是浅拷贝,所有子列表指向同一块内存地址,修改任意子列表的元素会同步修改所有子列表,属于高频踩坑写法,本身就不推荐使用。

正确动态实现方法

Python 的 list 本身是动态数组,二维 list 本质是元素为 list 的一维 list,无需提前指定行列数,初始化直接创建空列表即可:
dynamic_2d = []

常见操作示例

  • 新增行:调用外层列表的append()方法,参数为任意长度的一维列表即可,支持各行长度不一致
    示例:新增一行内容为[1,2,3],执行dynamic_2d.append([1,2,3]);新增空行执行dynamic_2d.append([])
  • 扩展已有行的列数:直接操作对应下标的子列表调用append()等方法即可
    示例:给第0行新增元素4,执行dynamic_2d[0].append(4)
  • 删除行/列:直接调用 list 原生的pop()、remove()、del等方法即可,行列数会随操作动态调整

完整运行示例

# 初始化完全无行列限制的二维列表
dynamic_2d = []

# 动态新增2行,两行初始长度不同
dynamic_2d.append([1, 2])
dynamic_2d.append([3, 4, 5])
print(dynamic_2d)  # 输出:[[1, 2], [3, 4, 5]]

# 给第0行动态新增1个元素,列数从2变为3
dynamic_2d[0].append(6)
print(dynamic_2d)  # 输出:[[1, 2, 6], [3, 4, 5]]

# 再动态新增第3行
dynamic_2d.append([7])
print(dynamic_2d)  # 输出:[[1, 2, 6], [3, 4, 5], [7]]

场景扩展

如果需要初始化时提前生成指定数量的空行,后续再动态扩展列,推荐用列表推导式实现,避免浅拷贝问题:
示例:初始化10行空列表,后续可自由扩展每行的列,也可继续新增行:
dynamic_2d = [[] for _ in range(10)]

内容的提问来源于stack exchange,提问作者shsh23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:45:03