如何在Python列表中使用字符串格式化完成全部元素的格式化操作?
Python列表内字符串批量格式化问题解决
问题根因
你当前代码仅最后一个元素完成格式化,是因为你只对列表的第三个字符串元素调用了format()方法,前两个字符串没有执行格式化操作,因此保留了原始占位符内容。
解决方案
方案1:遍历模板列表批量格式化
先定义所有格式模板的列表,再通过列表推导式遍历每个模板调用format()传入公共参数,适合所有模板共用同一组入参的场景:
# 先定义格式模板列表 format_templates = ["{0:^8}", "{1:^8}", "{2:^8}"] # 公共入参 params = (7, 8, 9) # 遍历格式化得到最终列表 list1 = [template.format(*params) for template in format_templates]
执行后list1的输出为:[' 7 ', ' 8 ', ' 9 ']
方案2:模板与参数一一配对格式化
如果每个模板仅对应一个参数,可以省略占位符序号,通过zip()配对模板和参数实现格式化,代码更简洁:
templates = ["{:^8}", "{:^8}", "{:^8}"] values = [7, 8, 9] list1 = [tpl.format(val) for tpl, val in zip(templates, values)]
两种方案都可以实现列表内所有待格式化字符串的完整格式化。
内容的提问来源于stack exchange,提问作者antwanne456
相关产品推荐
相关产品推荐

