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

方阵转置代码报‘list index out of range’原因及非numpy替代实现

方阵转置代码错误分析与替代实现

错误原因

你碰到的list index out of range错误,问题出在**matrix1的初始化和赋值逻辑上**:

  • matrix1一开始是空列表[],循环里每次创建了空列表b,但没把b加到matrix1里。
  • 当执行matrix1[i][j] = matrix[j][i]时,matrix1里连一行元素都没有,matrix1[i](比如第一次循环i=0时)压根不存在,更别说访问它的第j个元素了,直接触发索引越界。

修正后的原始代码

把创建好的行列表b添加到matrix1,再往b里加元素就行:

n = int(input("Enter the size of square matrix"))
matrix = []
for i in range(n):  
   a =[]
   for j in range(n):  
       a.append(int(input("Enter the entries rowwise:")))
   matrix.append(a)

matrix1 = []
for i in range(n):
   b = []
   for j in range(n):
        b.append(matrix[j][i])  # 先把转置元素加到当前行
   matrix1.append(b)  # 把当前行加入转置矩阵

# 打印结果
for i in range(n):
   for j in range(n):
        print(matrix1[i][j], end = " ")
   print()  # 每行结束换行,避免所有元素挤在一起

不依赖numpy的其他转置方法

方法1:列表推导式(简洁版)

用Python的列表推导式可以一行搞定转置,代码更清爽:

n = int(input("Enter the size of square matrix"))
matrix = []
for i in range(n):  
   a =[]
   for j in range(n):  
       a.append(int(input("Enter the entries rowwise:")))
   matrix.append(a)

# 列表推导式生成转置矩阵
transposed_matrix = [[matrix[j][i] for j in range(n)] for i in range(n)]

# 打印结果
for row in transposed_matrix:
    print(" ".join(map(str, row)))

方法2:用zip函数快速转置

zip(*matrix)会自动把矩阵的行和列对齐互换,返回的是元组,转成列表就行:

n = int(input("Enter the size of square matrix"))
matrix = []
for i in range(n):  
   a =[]
   for j in range(n):  
       a.append(int(input("Enter the entries rowwise:")))
   matrix.append(a)

# zip转置后转成列表
transposed_matrix = [list(row) for row in zip(*matrix)]

# 打印结果
for row in transposed_matrix:
    print(" ".join(map(str, row)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:20:35