如何在列表

时间:2017-11-01 10:31:52

标签: python list precision

如何在列表中最多只获取2个浮点精度值,而不更改元素的Float 类型

l = [[u'NY Disability Contribution', 2.6, 2.6, 2.6, 1.3, 0.0, 0.0, 
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.1],[u'Income Tax',387.32,387.32,387.32,193.66,0.0,0.0, 0.0, 0.0, 
    0.0, 0.0, 0.0, 0.0, 1355.62]]

输出应该像

result = [[u'NY Disability Contribution', 2.60, 2.60, 2.60, 1.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 9.10],[u'Income Tax',387.32,387.32,387.32,193.66,0.00,0.00, 0.00, 0.00, 
0.00, 0.00, 0.00, 0.00, 1355.62]]

例如:for 2.6 ---> 2.60

我试过这样的

result = [[i[0]] + [float(format(j,".2f")) for j in i[1:]] for i in y]

但是那些是字符串值

我的输出

   [[u'Contribution', '2.60', '2.60', '2.60', '1.30', '0.00', '0.00', 
   0.00', '0.00', '0.00', '0.00', '0.00', '0.00', '9.10'],
   [u'Tax','387.32','387.32','387.32','193.66','0.00','0.00', 
   '0.00','0.00', '0.00', '0.00', '0.00', '0.00', '1355.62']]

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您绝对想要以{2}浮点精度显示print(my_list),除非:

  • 您从float(或list)继承并更改__repr__方法
  • 您将元素转换为字符串
  • 您避免使用print(my_list)并使用自定义功能显示结果

使用Easy pretty printing of floats in python?中提供的答案,有可能:

class prettyfloat(float):
    def __repr__(self):
        return "%0.2f" % self

result = [[i[0]] + [prettyfloat(j) for j in i[1:]] for i in y]