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

Python 2.7新手求助:不使用pandas/prettytable实现列表表格化打印

解决Python 2.7无库表格输出问题

嘿,我来帮你调整代码,实现你想要的整齐表格效果!你的思路方向是对的,但有几个小细节需要优化:比如只计算了listA的最大长度,没考虑data里元素的宽度,而且缺少分隔线让表格结构更清晰。

修正后的代码

def print_results_table(data, listA):
    # 计算每一列的最大宽度:行标题列 + data的每一列
    column_widths = []
    # 行标题列的最大宽度(对应表格第一列)
    row_header_max = max(len(t) for t in listA)
    column_widths.append(row_header_max)
    # 计算每一列数据的最大宽度,同时和对应表头长度对比取最大值
    for col_idx in range(len(data[0])):
        col_elements = [str(row[col_idx]) for row in data]
        col_max = max(len(elem) for elem in col_elements)
        col_max = max(col_max, len(listA[col_idx]))
        column_widths.append(col_max)
    
    # 打印表头行:空字符串 + listA的元素
    header_parts = ['{:>{width}s}'.format('', width=column_widths[0])]
    for idx, header in enumerate(listA):
        header_parts.append('{:>{width}s}'.format(header, width=column_widths[idx+1]))
    print(' '.join(header_parts))
    
    # 打印分隔线,让表头和数据行区分开
    separator_parts = ['-' * width for width in column_widths]
    print(' '.join(separator_parts))
    
    # 打印每一行数据:行标题 + 对应data行内容
    for row_title, row_data in zip(listA, data):
        row_parts = ['{:>{width}s}'.format(row_title, width=column_widths[0])]
        for idx, elem in enumerate(row_data):
            row_parts.append('{:>{width}s}'.format(str(elem), width=column_widths[idx+1]))
        print(' '.join(row_parts))

listA = ["Alpha","Beta","gama","cat"]
data = [["A","B","C","D"],["E","F","G","H"],["I","J","K","L"],["M","N","O","P"]]
print_results_table(data, listA)

输出效果

运行后你会得到这样整齐的表格:

Alpha  Beta  gama   cat
----- ----- ----- ----- -----
Alpha     A     B     C     D
Beta      E     F     G     H
gama      I     J     K     L
cat       M     N     O     P

关键优化点

  • 全面计算列宽:不仅考虑listA的元素长度,还覆盖了data中每一列的最大宽度,同时保证表头能完全显示
  • 添加分隔线:让表头和数据行的层级更清晰,表格结构一目了然
  • 精准对齐:每一列都按照各自的最大宽度右对齐,彻底避免内容错位的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:11:55