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

Python用列表列表填充矩阵时赋值异常问题求助

Python矩阵赋值覆盖问题修复方案

问题根源

你碰到的赋值覆盖问题,大概率是矩阵初始化方式错了。比如要是用了这种写法:

rows = len(temp[0])
cols = len(temp)
matrix = [[0]*cols] * rows

生成的矩阵里,所有行都是同一个列表的引用——改任意一行的元素,其他行都会跟着变,本质是它们指向同一块内存空间,不是独立的行。

修复步骤

  1. 正确初始化独立行矩阵
    用列表推导式创建矩阵,保证每一行都是全新的列表,互相不影响:
rows = len(temp[0])
cols = len(temp)
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
  1. 检查索引重复问题
    如果用上述方法后还是有覆盖,那得确认int(temp[i])-1(你写的test[i]应该是temp[i]?)计算出的行索引是否重复。要是不同的i算出同一个row_idx,后面的i+1自然会把前面的值覆盖——这时候得检查temp里的数值是否有重复,或者调整索引计算逻辑,确保每个row_idx只对应一个i。

小案例验证

拿个简单例子测试,比如temp是[[1,3], [2,4]],要生成2行2列的矩阵:

temp = [[1,3], [2,4]]
# 错误初始化演示
matrix_bad = [[0]*2]*2
for i in range(len(temp)):
    row_idx = int(temp[i][0]) - 1
    matrix_bad[row_idx][0] = i + 1
print(matrix_bad)  # 输出 [[2, 0], [2, 0]],两行被同时修改

# 正确初始化演示
matrix_good = [[0 for _ in range(2)] for _ in range(2)]
for i in range(len(temp)):
    row_idx = int(temp[i][0]) - 1
    matrix_good[row_idx][0] = i + 1
print(matrix_good)  # 输出 [[1, 0], [2, 0]],符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:45:32