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

如何生成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

错误原因

  1. 索引越界:Python列表的索引从0开始,而代码中直接使用1-100作为索引,超出了未初始化或尺寸不符的列表范围。
  2. 矩阵未初始化:代码直接给Z[X][Y]赋值,但Z本身没有被创建为二维列表,访问不存在的索引必然报错。
  3. 逻辑错误:列表推导式的循环顺序、变量重复(最后一行两个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:06:55