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

Python矩阵反对角线填充1的代码实现求助

如何用Python给矩阵的反对角线填充1?

我看你现在在学用Python实现矩阵,想要把反对角线的元素设为1,但当前代码跑出来的是主对角线的效果,咱们一步步来改好它!

先看看你写的原代码里的几个小问题:

  • 你只定义了列数nbr_co,但没定义行数nbr_li,运行的时候肯定会报错;
  • 循环for i in range()是空的,没有指定循环范围;
  • grid[i][]和grid[][i]是语法错误,Python里不能这么写空索引;
  • 你写的逻辑其实是在设置主对角线(grid[i][i]),而反对角线的索引规律不一样。

修正后的完整代码

# 先让用户输入方阵的边长(行数=列数,因为反对角线针对方阵更合理)
size = int(input("Enter the size of the square matrix: "))
# 创建一个全0的size×size矩阵
grid = [[0]*size for i in range(size)]

def affiche(grid):
    for row in grid:
        print(row)

# 遍历每一行,设置反对角线元素为1
for i in range(size):
    # 反对角线的列索引 = 矩阵边长 - 1 - 当前行索引
    grid[i][size - 1 - i] = 1

# 打印矩阵
affiche(grid)

改动说明

  1. 统一矩阵尺寸:改成让用户输入方阵的边长(行数=列数),这样反对角线的逻辑更清晰;如果需要非方阵,咱们再调整,但通常反对角线指的是方阵里那条从右上到左下的线。
  2. 修正循环逻辑:循环范围设为range(size),遍历每一行的索引i;反对角线的列位置是size - 1 - i,比如当size=5时:
    • 第0行 → 列索引4 → grid[0][4] = 1
    • 第1行 → 列索引3 → grid[1][3] = 1
    • ...以此类推,正好对应右上到左下的反对角线。
  3. 简化打印函数:把for i in range(nbr_li)改成直接遍历grid里的每一行,代码更简洁易读。

运行示例(输入size=5时)

输出会是:

[0, 0, 0, 0, 1]
[0, 0, 0, 1, 0]
[0, 0, 1, 0, 0]
[0, 1, 0, 0, 0]
[1, 0, 0, 0, 0]

这样就正好是你想要的反对角线全为1的矩阵啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:02:45