如何生成100×100的Z矩阵并输出?解决IndexError问题
问题解决:二维矩阵赋值报错与CSV输出、打印方法
问题描述
需要生成一个100行100列的矩阵Z,填充四个边界的数值后以CSV格式输出,但运行代码时触发IndexError: list index out of range错误,同时想了解如何用print()函数输出矩阵内容。
用户的错误代码片段:
Z[X][Y] = [((20-10)/99)*(X-1)+10 for X in range(1, 101) for Y in range(1, 2)] Z[X][Y] = [((20-10)/99)*(Y-1)+10 for Y in range(1, 101) for X in range(1, 2)] Z[X][Y] = [((60-20)/99)*(X-1)+20 for X in range(1, 101) for Y in range(100, 101)] Z[X][Y] = [((60-20)/99)*(Y-1)+20 for Y in range(1, 101) for Y in range(100, 101)]
错误信息:
IndexError: list index out of range
用户的填充思路代码:
for X in range (1, 101): for Y in range (1, 101): Z[X][1] = ((20-10)/99)*(X-1)+10 Z[1][Y] = ((20-10)/99)*(Y-1)+10 Z[X][100] = ((60-20)/99)*(X-1)+20 Z[100][Y] = ((60-20)/99)*(Y-1)+20
错误原因
- 索引越界:Python列表的索引从
0开始,而代码中直接使用1-100作为索引,超出了未初始化或尺寸不符的列表范围。 - 矩阵未初始化:代码直接给
Z[X][Y]赋值,但Z本身没有被创建为二维列表,访问不存在的索引必然报错。 - 逻辑错误:列表推导式的循环顺序、变量重复(最后一行两个
Y循环)都不符合填充边界的需求,赋值方式也完全错误。
修正方案与代码
1. 初始化100x100矩阵
先创建一个100行100列的二维列表,用默认值填充:
# 生成100x100的矩阵,索引0-99对应原思路的1-100 Z = [[0.0 for _ in range(100)] for _ in range(100)]
2. 填充矩阵边界值
改用0-based索引,拆分循环提升效率:
# 填充第一列(原Y=1)和最后一列(原Y=100) for x in range(100): Z[x][0] = (10/99)*x + 10 Z[x][99] = (40/99)*x + 20 # 填充第一行(原X=1)和最后一行(原X=100) for y in range(100): Z[0][y] = (10/99)*y + 10 Z[99][y] = (40/99)*y + 20
3. 输出矩阵到CSV文件
使用Python内置的csv模块直接写入:
import csv # 写入CSV文件 with open('matrix_output.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(Z)
4. 用print()输出矩阵
- 直接打印整个矩阵:
print(Z)(输出紧凑,适合快速查看) - 逐行格式化打印(更清晰):
# 逐行输出,保留两位小数 for row in Z: formatted_row = [f"{num:.2f}" for num in row] print(formatted_row)
完整可运行代码
import csv # 初始化100x100矩阵 Z = [[0.0 for _ in range(100)] for _ in range(100)] # 填充边界 for x in range(100): Z[x][0] = (10/99)*x + 10 Z[x][99] = (40/99)*x + 20 for y in range(100): Z[0][y] = (10/99)*y + 10 Z[99][y] = (40/99)*y + 20 # 导出到CSV with open('matrix_output.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(Z) # 格式化打印矩阵 for row in Z: print([f"{val:.2f}" for val in row])
内容的提问来源于stack exchange,提问作者Lim Cheng Wei
相关产品推荐
相关产品推荐

