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

如何获取二维列表各列最长字符串长度实现打印表格自动对齐

Python打印客户表格自动适配列宽的优化方案

核心优化思路

  • 统一维护列配置,新增字段仅需修改配置列表,无需调整宽度计算、打印逻辑
  • 按列批量计算最大宽度,消除逐列判断的重复代码
  • 利用Python f-string原生的左对齐语法,无需手动拼接空格字符串

实现代码

customer_list = [
    ["ctm1","jacon","jackson@gmail.com","+60166197213","15/5/1990","jadsfsd23"],
    ["ctm1","jacksonmartin","jacksonmartinez@gmail.com","+60166197213","15/5/1990","jadsfsddfdf23"]
]
# 列配置:格式为(表头名称, 该列最小宽度),新增字段仅需在此处添加配置
HEADERS = [
    ("ID", 2),
    ("Username", 8),
    ("Email Address", 13),
    ("Phone number", 12),
    ("Date of birth", 12),
    ("Extra", 5)
]

def view_customer_account():
    # 批量计算每列的最终宽度:取「最小宽度」「该列所有内容最大长度」「表头长度」的最大值
    col_widths = []
    for col_idx in range(len(HEADERS)):
        max_content_len = max(len(customer[col_idx]) for customer in customer_list)
        col_width = max(HEADERS[col_idx][1], max_content_len, len(HEADERS[col_idx][0]))
        col_widths.append(col_width)
    
    # 打印表头
    header_row = "| " + " | ".join(f"{header[0]:<{col_widths[i]}}" for i, header in enumerate(HEADERS)) + " |"
    print(header_row)
    # 打印每条客户记录
    for customer in customer_list:
        row = "| " + " | ".join(f"{customer[i]:<{col_widths[i]}}" for i in range(len(HEADERS))) + " |"
        print(row)

view_customer_account()

方案优势

后续新增字段时,只需要在HEADERS列表中新增对应配置项即可,宽度计算、打印逻辑完全无需修改,不会产生重复的判断代码,适配任意数量的表列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 15:45:05