Python如何实现矩阵格式输出而非普通数字 加方括号方案不适用
Python矩阵格式输出解决方案
你现有代码的打印逻辑仅按元素空格分隔输出,缺少矩阵的规整对齐效果,以下是两种可直接复用的实现方案:
方案1:纯Python标准库实现(无需安装第三方依赖)
通过统一元素占位宽度实现列对齐,可自定义是否显示行首尾方括号:
def print_matrix(matrix): # 计算所有数字元素的最大字符宽度,保证列对齐 max_width = max(len(str(item)) for row in matrix for item in row if item != "*") for row in matrix: # 过滤占位符*,格式化每个元素 formatted_items = [f"{item:>{max_width}}" for item in row if item != "*"] # 不需要方括号就去掉输出内容里的[]即可 print(f"[{' '.join(formatted_items)}]") # 原业务逻辑保留,仅修改打印部分 rows = int(input("Rows: ")) columns = int(input("Columns: ")) number = columns matrix = [] for i in range(rows): row = input().split() for i in range(len(row)): row[i] = int(row[i]) matrix.append(row) if rows != columns: for i in range(abs(rows-columns)): if rows > columns: for j in range(rows): matrix[j].append("*") elif rows < columns: for j in range(columns-rows): matrix.append(["*"] * columns) number = columns rows = columns print("您输入的内容是:") print_matrix(matrix) # 旋转逻辑保留 for i in range(number): for j in range(i, rows - i - 1): original_element = matrix[i][j] matrix[i][j] = matrix[rows - 1 - j][i] matrix[rows - 1 - j][i] = matrix[rows - 1 - i][rows - 1 - j] matrix[rows - 1 - i][rows - 1 - j] = matrix[j][rows - 1 - i] matrix[j][rows - 1 - i] = original_element print("旋转90度后的结果:") print_matrix(matrix)
方案2:基于Numpy实现(输出格式更标准,适合矩阵后续运算)
如果允许使用第三方库,直接将过滤后的矩阵转成Numpy数组即可直接输出标准矩阵格式:
- 先安装Numpy:
pip install numpy - 代码修改示例:
import numpy as np # 中间业务逻辑和方案1完全一致,仅修改打印部分 print("您输入的内容是:") # 过滤占位符*后转成Numpy数组 input_matrix = np.array([[item for item in row if item != "*"] for row in matrix]) print(input_matrix) # 旋转逻辑执行完成后 print("旋转90度后的结果:") rotated_matrix = np.array([[item for item in row if item != "*"] for row in matrix]) print(rotated_matrix)
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

