Python非方阵场景下修改矩阵首行首列失效问题咨询
问题修复方案
错误原因
你给第一行赋值的循环范围配置错误:
len(x)获取的是矩阵的行数,你生成的3行6列非方阵中len(x)=3,所以给第一行赋值的循环只会遍历前3个元素,剩余3个元素没有被修改,导致效果不符合预期- 第一行的长度等于矩阵的列数,应该取
len(x[0])作为第一行的循环遍历范围
优化修正后代码
def empty_matrix(x,y): matrix = [] for i in range(x): row = [] for _ in range(y): row.append(None) matrix.append(row) return matrix # 生成3行6列非方阵 x = empty_matrix(3,6) # 填充第一列,循环次数等于行数 for i in range(len(x)): x[i][0] = i * -2 # 填充第一行,循环次数等于列数 for j in range(len(x[0])): x[0][j] = j * -2 # 打印验证效果 for row in x: print(row)
运行效果
输出结果完全符合预期:
[0, -2, -4, -6, -8, -10] [-2, None, None, None, None, None] [-4, None, None, None, None, None]
修正后不管矩阵是不是方阵,都能正常完成第一行、第一列的等差序列填充。
内容的提问来源于stack exchange,提问作者greenboy
相关产品推荐
相关产品推荐

