Pythonn阶矩阵相关,感激涕零

img


真的不会做,不知道是应该用切片还是什么,这个应该咋排呀,有关这种矩阵的应该怎样学习

当n为10时:
1 3 4 10 11 21 22 36 37 55
2 5 9 12 20 23 35 38 54 56
6 8 13 19 24 34 39 53 57 72
7 14 18 25 33 40 52 58 71 73
15 17 26 32 41 51 59 70 74 85
16 27 31 42 50 60 69 75 84 86
28 30 43 49 61 68 76 83 87 94
29 44 48 62 67 77 82 88 93 95
45 47 63 66 78 81 89 92 96 99
46 64 65 79 80 90 91 97 98 100

def matrix(n):
    res = [[1]*n for i in range(n)]
    k = 1
    for i in range(1,2*n-1):
        for j in range(max(0,i-n+1),min(n,i+1)):
            k += 1
            if i%2:
                res[i-j][j]=k
            else:
                res[j][i-j]=k
    return res

def output(res):
    for i in res:
        print(*i)

output(matrix(10))