当前位置:   article > 正文

python 矩阵的对角线输出(列表实现)_python 给定一个list 给出list中数在矩阵的对角上的矩阵

python 给定一个list 给出list中数在矩阵的对角上的矩阵

题目描述如下:
这个题目的要求差不多就是将矩阵按照对角线输出,不足的部分用0补齐,主要的难点就是对矩阵的对角线输出。

首先我们以3阶为例,为了清晰,下面将A[0][0]记为(0,0),那么最后的B矩阵就是[ [(0,0),0,0] , [(1,0),(0,1),0]] , [(2,0),(1,1),(0,2)] , [(2,1),(1,2),0] , [(2,2),0,0] ].我们把其中的非0项提出来看一下:

(0,0)
(1,0),(0,1)
(2,0),(1,1),(0,2)
(2,1),(1,2)
(2,2)

我们把上面的括号内左边记为i,右边记为j,即(i,j).先观察前三行(以三阶为例,m阶就是m行),每列开头的i依次由0增加到2(即m-1),而j保持0不变,同时观察每一行发现每行的i都从左往右依次-1直到i == 0,j从左往右依次+1一直到该行i的初始值(第一行0,第二行1,第三行2).同时当处理完开头为(2,0)的行后,需要将后续行的i固定为2(即m-1),则有了以下代码:

def func4(lst:list):
    lst_result = []
    m = len(lst)
    start = 0
    for j in range(m):
        for i in range(start,m):
            lst1 = []
            i1,j1 = i,j
            while i1>=0 and j1<=i:
                lst1.append(lst[i1][j1])
                i1 -= 1
                j1 += 1
            while len(lst1) != m:
                lst1.append(0)
            lst_result.append(lst1)
        #当进行到(lst[m-i][0],0)开头时,固定i为m-1
        if i == m-1 and j == 0:
            start = m-1
    return lst_result
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

有了这个矩阵对角线输出的例子(从下到上,从左往右),上下左右任意组合顺序对矩阵进行对角线输出都是同理,只需先列出相应的项,找到他们之间的规律,对代码进行稍加修改就能实现所需要的功能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/530371
推荐阅读
相关标签
  

闽ICP备14008679号