如何在控制台将矩阵相加的两个矩阵及结果按行对齐打印在同一行
矩阵对应行对齐打印实现方案
需求说明:需要将两个输入矩阵与相加后的结果矩阵的对应行打印在同一行,每行包含三个矩阵的对应行,并在中间行正确显示+和=运算符,替代原代码中单独打印矩阵和运算符的方式。
原代码
matrix1 = [[1, 2, 3], [3, 2, 1], [4, 5, 6]] matrix2 = [[1, 1, 1], [1, 1, 1], [1, 1, 1]] matrix3 = [[2, 3, 4], [4, 3, 2], [5, 6, 7]] for row in matrix1: print(row) print(' +') for row in matrix2: print(row) print(' =') for row in matrix3: print(row)
期望输出
[1, 2, 3] [1, 1, 1] [2, 3, 4] [3, 2, 1] + [1, 1, 1] = [4, 3, 2] [4, 5, 6] [1, 1, 1] [5, 6, 7]
解决方案代码
matrix1 = [[1, 2, 3], [3, 2, 1], [4, 5, 6]] matrix2 = [[1, 1, 1], [1, 1, 1], [1, 1, 1]] matrix3 = [[2, 3, 4], [4, 3, 2], [5, 6, 7]] # 获取矩阵中间行索引,适配任意奇数行矩阵 middle_idx = len(matrix1) // 2 # 同时遍历三个矩阵的对应行 for idx, (row1, row2, row3) in enumerate(zip(matrix1, matrix2, matrix3)): row1_str = str(row1) row2_str = str(row2) row3_str = str(row3) # 中间行显示运算符,其余行用等宽空格占位对齐 if idx == middle_idx: operator = " + " equal_sign = " = " else: operator = " " # 和"+"区域等宽 equal_sign = " " # 和" = "区域等宽 # 格式化打印整行内容 print(f"{row1_str}{operator}{row2_str}{equal_sign}{row3_str}")
实现思路
- 用
zip()同时获取三个矩阵的对应行,保证每行的三个行元素一一对应; - 通过
len(matrix1)//2获取中间行索引,适配任意奇数行的矩阵; - 中间行显示
+和=,其余行用等宽空格占位,确保整体排版对齐; - 利用f-string拼接所有元素,实现一行内打印三个矩阵的对应行与运算符。
内容的提问来源于stack exchange,提问作者Master sinister
相关产品推荐
相关产品推荐

