我有一个要使用f字符串打印的浮点列表: 这是列表
er=[0.3401126304419511,
0.32561695086083536,
0.3115512789515306,
0.21734184387097139,
0.22354269408531188]
我想使用f字符串如下打印它们:
print(f'{err}')
产生:
[0.3401126304419511, 0.32561695086083536, 0.3115512789515306, 0.21734184387097139, 0.22354269408531188]
但是以下操作无效:
print(f'{err:.2}')
Traceback (most recent call last):
File "C:\IPython\core\interactiveshell.py", line 3325, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-166-bbcdc82a9939>", line 1, in <module>
print(f'{err:.2}')
TypeError: unsupported format string passed to list.__format__
这是错误还是功能?我该如何进行这项工作?
我正在使用python版本:
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
答案 0 :(得分:2)
这是一种使用列表理解的方法:
print([f"{x:.2}" for x in er])
答案 1 :(得分:1)
自此以来,您希望打印每个单个元素的小数点后的前两位。您将不得不对其进行迭代并将其打印为-
[f'{element:.2}' for element in er]
通常,我们可以将len, sum
之类的聚合类型函数直接应用于列表,而无需对其进行迭代。
答案 2 :(得分:0)
在这里,print(f'{er}')
等效于print(er)
。它将输出您表示的列表表示形式:
[0.3401126304419511, 0.32561695086083536, 0.3115512789515306, 0.21734184387097139, 0.22354269408531188]
当您要应用f'{err:.2}'
时,您真正想要的是将此格式规则应用于列表的每个元素。您将需要一个for循环或一个列表理解来实现这一点。
如@ Buckeye14Guy的评论中所建议,以下应该可以正常工作:
er2 = [f'{el:.2}' for el in er]
print(er2)
其他方法也可以使用(地图),但我想您有足够的机会继续进行下去。