需要F字符串列表理解示例

时间:2019-09-04 17:00:24

标签: python list-comprehension f-string

我有一个要使用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

3 个答案:

答案 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)

其他方法也可以使用(地图),但我想您有足够的机会继续进行下去。

相关问题