tags:

views:

64

answers:

3

I want to print a list of numbers, but I want to format each member of the list before it is printed. For example,

theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]

I want the following output printed given the above list as an input:

[1.34, 7.42, 6.97, 4.55]

For any one member of the list, I know I can format it by using,

print "%.2f" % member

Is there a command/function that can do this for the whole list. I can write one, but was wondering if one already exists.

Thanks.

+5  A: 

If you just want to print the numbers you can use a simple loop:

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

If you want to store the result for later you can use a list comprehension:

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

You can then print this list to get the output as in your question:

print formattedList

Note also that % is being deprecated. If you are using Python 2.6 or newer prefer to use format.

Mark Byers
Thanks! This is great. I don't know how to use `format` yet. But will learn.
Curious2learn
A: 

You can use list comprehension, join and some string manipulation, as follows:

>>> 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]'
moshez
+1  A: 

You can use the map function

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