instalar - install tabulate python mac
Controle un formato de impresiĆ³n cuando imprima una lista en Python (2)
Tengo una lista con un número de punto flotante llamado a
. Cuando imprimo la lista con print a
. Obtengo el resultado de la siguiente manera.
[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]
¿Puedo decirle a la impresora de la lista que imprima el formato de "5.3f" para obtener un mejor resultado?
[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]
Si necesita que esto funcione en estructuras anidadas, debe buscar en el módulo pprint
. Lo siguiente debe hacer lo que quiera, en este contexto:
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]]}
Para obtener más detalles sobre pprint
, consulte: http://docs.python.org/library/pprint.html
Si solo es para una lista plana, la solución de Aix es buena. O si no le gustan las cotizaciones adicionales, puede hacer:
print ''[%s]'' % '', ''.join(''%.3f'' % val for val in list)
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'']
donde l
es tu lista.
editar: si las citas son un problema, puede usar
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]