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

如何调整可变参数格式化?format无法识别嵌套列表长度的原因及解决方案

问题与解决方法

问题描述

给定列表:

my_list = [
    ['a', 'b'],
    ['c', 'd', 'e'],
    ['f', 'g'],
    ['h']
]

尝试用以下代码打印左对齐字符串时,仅输出每个嵌套列表的第一个元素:

for i in my_list:
    print('{:<10}'.format(*i))
  
# 实际输出:
a         
c         
f         
h 

疑问:为什么format方法无法自动推导每个嵌套列表的长度?预期输出应为:

a          b       
c          d          e
f          g
h

需求:需要基于{:<10}语法的稳健解决方案,而非以下实现:

for i in my_list:
    print(*i, sep=' '*10)

原因解析

'{:<10}'.format(*i)的格式字符串仅包含一个占位符{:<10},即便用*i将嵌套列表的元素拆包传递给format,该方法也只会取第一个元素填充占位符,剩余元素会被直接忽略。这是format的设计逻辑:占位符的数量、位置需要与传入参数一一对应,它不会自动根据参数数量生成对应占位符。

解决方案

根据每个嵌套列表的长度,动态生成对应数量的{:<10}占位符模板,再用format填充元素即可:

my_list = [
    ['a', 'b'],
    ['c', 'd', 'e'],
    ['f', 'g'],
    ['h']
]

for items in my_list:
    # 生成与元素数量匹配的左对齐占位符模板
    format_template = '{:<10}' * len(items)
    # 填充元素并打印,rstrip()可选,用于移除行尾多余空格
    print(format_template.format(*items).rstrip())

输出结果

a          b       
c          d          e
f          g
h

说明

  • 对于长度为n的嵌套列表,'{:<10}' * n会生成包含n个左对齐占位符的模板,比如长度为2时生成'{:<10}{:<10}'
  • *items将嵌套列表元素拆包,逐个填充到占位符中
  • rstrip()可按需使用,若保留行尾空格则无需添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:37:14