You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将二维列表打印为对齐规整的表格?

解决Python二维列表对齐打印的问题

针对你要打印两名玩家掷骰子结果的需求,以下两种方法可以解决空格分隔导致的错位问题:

方法1:手动字符串格式化(无需额外依赖)

利用Python的字符串格式化语法,给每列元素指定固定宽度,确保行列对齐。比如设定每列占10个字符宽度,用f"{内容:<10}"实现左对齐(>是右对齐,^是居中),不管元素长度如何,每列都会保持规整。

示例代码:

import random

# 模拟两名玩家各掷10次骰子的结果
dice_results = [
    [random.randint(1, 6) for _ in range(10)],
    [random.randint(1, 6) for _ in range(10)]
]

# 计算总分与平均分
player_totals = [sum(player) for player in dice_results]
player_avgs = [total / 10 for total in player_totals]

# 打印表头
print(f"{'玩家1':<10}{'玩家2':<10}")
print("-" * 20)

# 逐行打印每轮掷骰子结果
for roll1, roll2 in zip(*dice_results):
    print(f"{roll1:<10}{roll2:<10}")

# 打印总分与平均分
print("-" * 20)
print(f"总分:    {player_totals[0]:<6}{player_totals[1]}")
print(f"平均分:  {player_avgs[0]:.1f}      {player_avgs[1]:.1f}")

方法2:使用tabulate库(简洁高效)

如果不想手动处理格式,可以用第三方库tabulate,它能自动计算列宽并生成规整表格,支持多种表格样式。

首先安装库:

pip install tabulate

示例代码:

import random
from tabulate import tabulate

# 模拟数据与计算指标
dice_results = [
    [random.randint(1, 6) for _ in range(10)],
    [random.randint(1, 6) for _ in range(10)]
]
player_totals = [sum(p) for p in dice_results]
player_avgs = [t / 10 for t in player_totals]

# 整理表格数据:包含每轮结果、总分、平均分
table_rows = []
for r1, r2 in zip(*dice_results):
    table_rows.append([r1, r2])
table_rows.extend([
    ["总分", ""],
    [player_totals[0], player_totals[1]],
    ["平均分", ""],
    [player_avgs[0], player_avgs[1]]
])

# 打印表格,指定表头和样式
print(tabulate(table_rows, headers=["玩家1", "玩家2"], tablefmt="grid"))

tablefmt参数可选值包括simple(无边框)、grid(带网格边框)、pipe(Markdown格式表格)等,可按需调整。

核心逻辑

两种方法的核心都是固定列宽:手动格式化是显式指定宽度,tabulate则自动计算列宽并对齐,都能解决元素长度不同导致的错位问题。

内容的提问来源于stack exchange,提问作者Isa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:45:38