Python如何将嵌套列表按列对齐的矩阵格式打印输出?
对齐打印嵌套矩阵的实现方法
- 核心需求是让所有元素的个位对齐,需先统一每个元素的输出宽度,做右对齐格式化后再拼接成行。
实现步骤
- 先将原始列表修正为Python合法的嵌套列表(原内容元素间缺逗号分隔):
matrix = [[15, 16, 18, 19, 12, 11], [13, 19, 23, 21, 16, 12], [12, 15, 17, 19, 20, 10], [10, 14, 16, 13, 9, 6]] - 自动计算所有元素转字符串后的最大长度,避免硬编码宽度,适配不同数值长度的场景:
max_width = max(len(str(num)) for row in matrix for num in row) - 遍历每一行,对元素做固定宽度右对齐格式化后拼接,按需添加行间空行:
for row in matrix: formatted_row = ' '.join(f"{num:>{max_width}}" for num in row) print(formatted_row) print() # 如需行间空行保留,不需要则删除该行
关键说明
格式化语法解释:
f"{num:>{max_width}}"为Python 3.6+支持的标准格式化语法,其中>指定右对齐规则,max_width为元素的总输出宽度,宽度不足时会在左侧自动补空格,保证个位完全对齐。
- 你之前使用的
' '.join(map(str,lst))直接将数字转字符串拼接,短数字(如9)为单字符、长数字(如20)为双字符,长度不一致导致错位。先做固定宽度格式化再拼接即可解决该问题。 - 你给出的单条拼接示例末尾多了逗号,属于语法错误,实际使用时需去掉。
实际输出效果
15 16 18 19 12 11 13 19 23 21 16 12 12 15 17 19 20 10 10 14 16 13 9 6
完全符合要求的对齐规则。
内容的提问来源于stack exchange,提问作者ninheart
相关产品推荐
相关产品推荐

