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

如何用f-string对列表内数值取整?触发unsupported format string报错

问题:f-string格式化列表报错:unsupported format string passed to list.__format__

我想用f-string对列表中的数值取整,但运行代码时触发错误:unsupported format string passed to list.__format__,代码如下:

IS_gradebooks = [['ISOM2020', [59, 100, 80, 55, 95, 87, 95, 98, 74, 69, 92, 94, 75, 97, 43, 57]],
                 ['ISOM3400', [98, 73, 45, 88, 72, 94, 82, 100, 89, 52]], 
                 ['ISOM3600', [24, 44, 100, 81, 91, 93, 87, 72, 55]],
                 ['ISOM4200', [90, 56, 78, 67, 90, 93]]
                ]
bruh=IS_gradebooks
for i in range(len(bruh)):
  a=sum(bruh[i][1])/len(bruh[i][1]) 
  bruh[i][1]=a
print(f"{bruh:.2f}")

错误原因

你直接用f"{bruh:.2f}"试图格式化整个列表对象,但f-string的.2f格式仅支持数值类型(int、float等),列表本身不支持这种格式化规则,因此触发报错。

解决方案

需要针对列表中每个课程的平均分数值单独格式化,而非格式化整个列表。以下是两种可行写法:

写法1:生成格式化后的列表或逐个打印

IS_gradebooks = [['ISOM2020', [59, 100, 80, 55, 95, 87, 95, 98, 74, 69, 92, 94, 75, 97, 43, 57]],
                 ['ISOM3400', [98, 73, 45, 88, 72, 94, 82, 100, 89, 52]], 
                 ['ISOM3600', [24, 44, 100, 81, 91, 93, 87, 72, 55]],
                 ['ISOM4200', [90, 56, 78, 67, 90, 93]]
                ]

# 计算平均分,改用更简洁的遍历方式
for course in IS_gradebooks:
    scores = course[1]
    course[1] = sum(scores) / len(scores)

# 方式A:逐个格式化打印课程和平均分
for course in IS_gradebooks:
    print(f"{course[0]}: {course[1]:.2f}")

# 方式B:生成包含格式化后数值的新列表再打印
formatted_gradebooks = [[course[0], f"{course[1]:.2f}"] for course in IS_gradebooks]
print(formatted_gradebooks)

写法2:直接打印时处理整个列表的格式

如果希望输出的整体结构和原列表一致,只是数值保留两位小数,可以在打印时遍历处理每个元素:

# 接上面的平均分计算代码
print("[", end="")
for idx, course in enumerate(IS_gradebooks):
    if idx > 0:
        print(", ", end="")
    print(f"['{course[0]}', {course[1]:.2f}]", end="")
print("]")

额外提示

原代码中bruh=IS_gradebooks是浅引用,修改bruh会直接改变原列表IS_gradebooks。如果不想修改原列表,可改用列表推导式实现浅拷贝:

bruh = [item.copy() for item in IS_gradebooks]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:15:34