在python中格式化对象列表

在python中格式化对象列表,python,list,python-3.x,Python,List,Python 3.x,我已经阅读了很多与我的问题相关的类似问题,但我没有看到任何专门针对这个问题的问题。 我有一个对象列表,例如 l = ((a, 0.5), (b, 0.75), (c, 0.954367)) 我想能够打印出只有数字,格式为5位小数。我不太确定该怎么做,所以我开始试着把它切片,然后打印出来 nums = list(z[1:2] for z in l) # originally had 'tuple' instead of 'list' print("numbers: {:.5f}".form

我已经阅读了很多与我的问题相关的类似问题,但我没有看到任何专门针对这个问题的问题。 我有一个对象列表,例如

l = ((a, 0.5), (b, 0.75), (c, 0.954367))
我想能够打印出只有数字,格式为5位小数。我不太确定该怎么做,所以我开始试着把它切片,然后打印出来

nums = list(z[1:2] for z in l)    # originally had 'tuple' instead of 'list'
print("numbers: {:.5f}".format(nums))
切片工作,只给我数字,但当我得到打印语句时,我得到一个错误

TypeError: non-empty format string passed to object.__format__
我最初将切片作为元组进行,但认为这可能是导致错误的原因,所以将其更改为列表,这没有帮助。 我读到的一个答案是“bytes对象没有自己的uu格式u_u)方法,因此使用了默认的from对象。”并建议将其转换为字符串,这导致了相同的错误

我的问题本质上是,有没有一种方法可以修复这个错误,或者有没有更好的方法可以在不切片/使用上述方法的情况下获得输出


谢谢,

使用简单的列表理解

>>> l = (('a', 0.5), ('b', 0.75), ('c', 0.954367))
>>> ["{:.5f}".format(i[1]) for i in l]
[ '0.50000', '0.75000', '0.95437']

您正试图将一个
浮点型
表示类型
'f'
与列表对象一起使用。这就是失败的原因

提供
print
格式值的列表,您可以将其解包并作为位置提供:

print("numbers: ", *["{0[0]:.5f}".format(i) for i in nums])
现在打印出:

numbers:  0.50000 0.75000 0.95437
尝试:


z[1:2]基本上给出了另一个数字列表:
[[0.5],[0.75],[0.954367]
,我认为您不需要它。

这个答案没有解决小数点后5位的格式限制。这个答案是针对第一行的,第二行已经考虑了小数点后5位
nums = list(z[1] for z in l)