python 矩阵的对角线输出(列表实现)

题目描述如下:
这个题目的要求差不多就是将矩阵按照对角线输出,不足的部分用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

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

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值