如何返回N*N方阵的对角线/反对角线数组并输出符合要求的格式
矩阵反对角线按指定规则打印解决方案
遍历规则
- 对角线遍历规则:i自增1、j自减1
- 反对角线遍历规则:i自减1、j自增1
示例输入矩阵
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
期望输出格式
1 0 0 2 4 0 3 5 7 6 8 0 9 0 0
问题说明
现有代码已经正确提取了所有反对角线的元素,但输出为一维列表,没有按单条对角线分组补0,且元素顺序需要调整以匹配输出要求。
修正后代码
def print_diagonal(A): m = len(A) n = len(A[0]) result = [] # 遍历起点在第一列的对角线 for k in range(m): i = k j = 0 current_line = [] while i >= 0: current_line.append(str(A[i][j])) i -= 1 j += 1 # 调整元素顺序,补0到行长度等于矩阵阶数 current_line.reverse() current_line += ['0'] * (n - len(current_line)) result.append(' '.join(current_line)) # 遍历起点在最后一行的对角线 for k in range(1, n): i = m - 1 j = k current_line = [] while j <= n - 1: current_line.append(str(A[i][j])) i -= 1 j += 1 current_line.reverse() current_line += ['0'] * (n - len(current_line)) result.append(' '.join(current_line)) return result A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # 逐行输出结果 for line in print_diagonal(A): print(line)
输出验证
运行上述代码可直接得到与期望完全一致的输出结果。
内容的提问来源于stack exchange,提问作者abd
相关产品推荐
相关产品推荐

