2011-09-08 23 views
7

浮動小数点数がaのリストがあります。 print aでリストを印刷すると結果は次のようになります。Pythonでリストを印刷するときの印刷形式を制御する

[8.364, 0.37, 0.09300000000000003, 7.084999999999999, 0.469, 0.303, 9.469999999999999, 0.28600000000000003, 0.2290000000 000001, 9.414, 0.9860000000000001, 0.534, 2.1530000000000005]

私はより良い結果を得るために、「5.3f」の形式を印刷するには、リストのプリンタを伝えることはできますか? lはあなたのリストである

[8.364, 0.37, 0.093, 7.084, 0.469, 0.303, 9.469, 0.286, 0.229, 9.414, 0.986, 0.534, 2.153]

答えて

15
In [4]: print ['%5.3f' % val for val in l] 
['8.364', '0.370', '0.093', '7.085', '0.469', '0.303', '9.470', '0.286', '0.229', '1.000', '9.414', '0.986', '0.534', '2.153'] 

編集:引用符が問題であれば、あなたは、ネストされた構造で動作するようにこれを必要とする場合は、pprintモジュールになっているはずです

In [5]: print '[' + ', '.join('%5.3f' % v for v in l) + ']' 
[8.364, 0.370, 0.093, 7.085, 0.469, 0.303, 9.470, 0.286, 0.229, 1.000, 9.414, 0.986, 0.534, 2.153] 
5

を使用することができます。 、pprintの詳細については

from pprint import PrettyPrinter 
class MyPrettyPrinter(PrettyPrinter): 
    def format(self, object, context, maxlevels, level): 
     if isinstance(object, float): 
      return ('%.2f' % object), True, False 
     else: 
      return PrettyPrinter.format(self, object, context, 
             maxlevels, level) 
print MyPrettyPrinter().pprint({1: [8, 1./3, [1./7]]}) 
# displays {1: [8, 0.33, [0.14]]} 

を参照してください。次は、この文脈では、あなたが欲しいものを行う必要があり、それがフラットなリストのためだけならhttp://docs.python.org/library/pprint.html

、その後、AIXのソリューションは良いです。または、余分な引用符が気に入らない場合は、次のようにしてください:

print '[%s]' % ', '.join('%.3f' % val for val in list)