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

Python矩阵遍历:从指定坐标自动生成同心正方形数值矩阵

基于指定坐标生成同心正方形填充矩阵的实现方案

问题描述

现有一个5×5的初始零矩阵:

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

需要基于给定的(x,y)坐标,从该位置向外逐层构建同心正方形并填充对应数值,示例效果如下:
示例1:

3 3 3 3 3
3 2 2 2 2
3 2 1 1 2
3 2 1 1 2
3 2 2 2 2

示例2:

2 2 2 3 4
1 1 2 3 4
1 1 2 3 4
2 2 2 3 4
3 3 3 3 4

疑问:是否存在可替代硬编码的自动化函数或库来便捷实现该需求?

解决方案

不需要依赖第三方库,通过基础数学计算就能实现自动化生成,核心逻辑是计算每个单元格到指定中心坐标的横向/纵向距离的最大值,再根据数值规则调整填充值。

Python实现代码

def generate_concentric_matrix(matrix_size, center_x, center_y):
    # 初始化指定大小的零矩阵
    matrix = [[0] * matrix_size for _ in range(matrix_size)]
    for i in range(matrix_size):
        for j in range(matrix_size):
            # 计算当前单元格与中心的横向、纵向距离
            horizontal_dist = abs(i - center_x)
            vertical_dist = abs(j - center_y)
            # 取最大距离作为层数,加1匹配示例的数值起始规则
            matrix[i][j] = max(horizontal_dist, vertical_dist) + 1
    return matrix

# 测试示例1(中心坐标为(2,2),矩阵索引从0开始)
print("示例1输出:")
for row in generate_concentric_matrix(5, 2, 2):
    print(' '.join(map(str, row)))

# 测试示例2(中心坐标为(1,1),矩阵索引从0开始)
print("\n示例2输出:")
for row in generate_concentric_matrix(5, 1, 1):
    print(' '.join(map(str, row)))

逻辑说明

  • 对于矩阵中的每个单元格(i,j),计算它到中心(center_x, center_y)的横向距离horizontal_dist和纵向距离vertical_dist;
  • 两个距离的最大值对应该单元格所在的「同心层」——中心是第0层,向外每扩展一层数值加1;
  • 代码中+1是为了匹配示例里从1开始的填充规则,若需要从0起始,直接去掉该操作即可;
  • 该方法支持任意大小的矩阵,完全替代硬编码,只需传入矩阵尺寸和中心坐标即可生成目标矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:59:54