温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用python怎么实现矩阵按对角线打印

发布时间:2021-04-17 16:29:44 来源:亿速云 阅读:530 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关使用python怎么实现矩阵按对角线打印,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

如下所示:

Description: 将一个矩阵(二维数组)按对角线向右进行打印。(搜了一下发现好像是美团某次面试要求半小时手撕的题) Example: Input: [ [1,2,3,4], [5,1,2,3], [9,5,1,2] ] Output: [[4], [3, 3], [2, 2, 2], [1, 1, 1], [5, 5], [9]]

思路: 考虑每条对角线开头元素的index(i,j)。i从0开始遍历,j从col-1开始遍历,首先考虑j的变化,若j变为0,则保持不变,让i变化。在确定开头元素后,可通过设置i+1,j+1及不超过范围来向lst中对角线上添加元素。

对于以上例子,各对角线开头元素的index分别为:

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

其中各lst中的元素index分别为:

[(0,3)] [(0,2),(1,3)] [(0,1),(1,2),(2,3)] [(0,0),(1,1),(2,2)] [(1,0),(2,1)] [(2,0)]

代码:

def diagonal_right(matrix):  if not matrix:   return []  row = len(matrix)  col = len(matrix[0])  col2 = col  result = []  for i in range(row):   for j in range(col2 - 1, -1, -1): #j倒序遍历    lst = []    i1,j1 = i,j #i1,j1用于方便同一对角线元素的添加,否则改变i,j影响开头元素的选择    while i1 <= row - 1 and j1 <= col - 1:     lst.append(matrix[i1][j1])     j1 += 1     i1 += 1    result.append(lst)    if i == 0 and j == 0:#当遍历完(0,0)开头的一条对角线后,让j固定为0     col2 = 1  return('the result is: %s'%result,'end')   #test print(diagonal_right([[1],[2]])) print(diagonal_right([[1]])) print(diagonal_right([  [1,2,3,4],  [5,1,2,3],  [9,5,1,2] ]))

输出:

使用python怎么实现矩阵按对角线打印

变型: 由(0,0)开始向左打印:

思路: 同样考虑每条对角线开头元素的index(i,j)。i从0开始遍历,j也从0开始遍历,首先考虑j的变化,若j变为col-1,则保持不变,让i变化。在找到开头元素后,可通过设置i+1,j-1及不超过范围来向lst中对角线上添加元素。

对于以上例子,各对角线开头元素的index分别为:

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

其中各lst中的元素index分别为:

[(0,0)] [(0,1),(1,0)] [(0,2),(1,1),(2,0)] [(0,3),(1,2),(2,1)] [(1,3),(2,2)] [(2,3)]

代码:

def diagonal_left(matrix):  if not matrix:   return []  row = len(matrix)  col = len(matrix[0])  k=0  result = []  for i in range(row):   for j in range(k,col): # j顺序遍历    lst = []    i1, j1 = i, j # i1,j1用于方便同一对角线元素的添加,否则改变i,j影响开头元素的选择    while i1 <= row - 1 and j1 >=0:     lst.append(matrix[i1][j1])     j1 -= 1     i1 += 1    if i==0 and j==col-1:     k=col-1    result.append(lst)  return ('the result is: %s' % result, 'end') # test print(diagonal_left([[1],[2]])) print(diagonal_left([[1]])) print(diagonal_left([  [1,2,3,4],  [5,1,2,3],  [9,5,1,2] ]))

输出:

使用python怎么实现矩阵按对角线打印

上述就是小编为大家分享的使用python怎么实现矩阵按对角线打印了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI