2017-11-01 2 views
0

So erhalten Sie nur bis zu 2 Float-Präzisionswerte von Elementen in einer Liste, ohne den Float Typ der Elemente zu ändern.So erhalten Sie nur bis zu 2 Float-Präzisionswerte von Elementen in einer Liste

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]] 

Ausgabe sollte

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]] 

Eg wie: 2,6 ---> 2.60

Ich habe wie dieser versucht

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

aber diejenigen, die als String kommen Werte

mein outp ut

[[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']] 

Vielen Dank im Voraus

+0

Kurze Antwort: Sie können nicht .... –

+0

vererben listet die repr-Methode auf und schreibt sie um. aber das ist knifflig ... –

+1

Zahlen haben ihre eigene interne Darstellung. Es spielt keine Rolle, wie die Darstellung aussieht, wie Sie sie sehen. Wenn Sie eine spezielle Darstellung wünschen, müssen sie als Zeichenfolgen betrachtet werden. – fernand0

Antwort

0

Wenn Sie unbedingt print(my_list) mit einem 2 Schwimmer Präzision angezeigt werden soll, können Sie nicht, es sei denn:

  • erben Sie von float (oder list) und ändern Sie die __repr__ Methode
  • Sie konvertieren Elemente in Zeichenfolge wie Sie
  • Sie a nichtig print(my_list) verwenden und eine benutzerdefinierte Funktion verwenden Ihr Ergebnis

Mit der Antwort in Easy pretty printing of floats in python?, hier vorgesehen angezeigt werden ist eine Möglichkeit:

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

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