我想用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}")
2条答案
按热度按时间am46iovg1#
可以将变量
bruh[i][1]
更改为"{0:.2f}".format(a)
,并在循环中打印该变量:cygmwpex2#
当你尝试使用f-字符串来格式化一个列表时,会调用列表对象的format方法,这个方法并没有被实现来处理格式化表达式,因此,python会引发错误“unsupported format string passed to list.format”。
如果你试过
你还是会得到
因为python解释器试图调用带有格式说明符.2f的list对象的format方法。但是,list对象的format方法没有被实现来处理像.2f这样的格式化表达式,并且它不知道如何使用该说明来格式化数字列表。
一种解决方法是:除了使用f-string来格式化整个列表,你还可以在for循环中使用f-string来格式化列表中的每一个元素,下面是一个例子来说明你是如何做到这一点的:
也可以使用列表解析代替for循环来实现相同的结果