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

Python列表append实现与动态表格化显示问题求助

动态适配列表长度的表格显示方案

原代码中display函数硬编码了3列的解包逻辑和格式模板,当使用append给子列表添加元素后,子列表长度超过3就会触发ValueError——既无法将多元素列表解包到固定的3个变量中,固定的表头和格式字符串也无法适配动态变化的列数。

以下是修改后的完整代码,可实现动态适配任意长度子列表的表格显示:

date = [['Monday', 'Tuesday', 'Wednesday'],
        ['January', 'February', 'March'],
        [2000, 2010, 2020]]

def display():
    # 获取所有子列表中最长的长度,确定表格总列数
    max_col_count = max(len(sublist) for sublist in date)
    # 动态生成表头,格式为“1th date、2th date...”
    headers = [f"{idx+1}th date" for idx in range(max_col_count)]
    # 生成对应列数的格式化字符串,每列宽度设为15,左对齐
    format_string = ' '.join(['{:<15}' for _ in range(max_col_count)])
    
    # 打印表头
    print(format_string.format(*headers))
    # 打印分割线,长度匹配总列宽
    print('-' * (15 * max_col_count))
    
    # 遍历每个子列表,动态打印每行内容
    for sublist in date:
        # 若当前子列表长度不足总列数,补空字符串对齐表格
        padded_sublist = sublist + [''] * (max_col_count - len(sublist))
        print(format_string.format(*padded_sublist))

def add():
    list_num = int(input('Enter which list(1, 2, 3): '))
    list_num = list_num - 1
    print(date[list_num])
    if list_num == 2:
        new_var = int(input('Enter new item: '))
    else:
        new_var = str(input('Enter new item: '))
    date[list_num].append(new_var)
    print(date[list_num])
    print('Successfully added!')

display()
add()
display()

关键改动说明

  • 动态确定列数:通过max(len(sublist) for sublist in date)获取最长子列表的长度,以此作为表格的总列数,适配任意数量的新增元素。
  • 动态生成表头和格式模板:根据总列数自动生成对应数量的表头文本和格式化字符串,彻底移除硬编码逻辑。
  • 补全短列表对齐:对长度不足总列数的子列表补充空字符串,保证每行的列数一致,维持表格的规整对齐。
  • 移除固定解包:不再使用first, second, third = i这种固定数量的解包操作,改用format(*padded_sublist)动态传递参数,适配任意长度的子列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:03:21