2010-05-04 25 views
10

Quiero imprimir una lista de números, pero quiero formatear cada miembro de la lista antes de que se imprima. Por ejemplo,Dar formato a todos los elementos de una lista

theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577] 

quiero la siguiente salida impresa dada la lista anterior como entrada:

[1.34, 7.42, 6.97, 4.55] 

Para cualquiera de los miembros de la lista, sé que puedo darle formato utilizando

print "%.2f" % member 

¿Existe algún comando/función que pueda hacer esto para toda la lista? Puedo escribir uno, pero me preguntaba si ya existe uno.

Respuesta

15

Si sólo desea imprimir los números que puede utilizar un bucle simple:

for member in theList: 
    print "%.2f" % member 

Si desea almacenar el resultado de más adelante se puede utilizar una lista por comprensión:

formattedList = ["%.2f" % member for member in theList] 

Usted puede imprimir esta lista para obtener el resultado como en su pregunta:

print formattedList 

Tenga en cuenta también que % está en desuso. Si está utilizando Python 2.6 o posterior prefiere usar format.

+0

Gracias! Esto es genial. Aún no sé cómo usar 'format'. Pero aprenderé – Curious2learn

3

Puede utilizar la lista de comprensión, y algunos unirse a la manipulación de cadenas, de la siguiente manera:

>>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577] 
>>> def format(l): 
...  return "["+", ".join(["%.2f" % x for x in l])+"]" 
... 
>>> format(theList) 
'[1.34, 7.42, 6.97, 4.55]' 
2

Puede usar la función de mapa

l2 = map(lambda n: "%.2f" % n, l) 
4

Para Python 3.5.1, puede utilizar:

>>> theList = [1.343465432, 7.423334343, 6.967997797, 4.5522577] 
>>> strFormat = len(theList) * '{:10f} ' 
>>> formattedList = strFormat.format(*theList) 
>>> print(formattedList) 

El resultado es:

' 1.343465 7.423334 6.967998 4.552258 ' 
2

Una solución muy corto usando "" .formato() y un generador de expresión:

>>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577] 

>>> print(['{:.2f}'.format(item) for item in theList]) 

['1.34', '7.42', '6.97', '4.55'] 
Cuestiones relacionadas