假设我在Python中有一个浮点数列表。
x = [1.2, 3.4, 5.7, 7.8]
要打印出这个数组,我们可以使用以下命令:
print '{0}'.format(x)
以上命令的输出如下:
[1.2, 3.4, 5.7, 7.8]
但是,有没有办法以格式化的方式打印出列表的内容?例如,我想使用如下四个小数点:
[ 1.2000, 3.4000, 5.7000, 7.8000]
要做到这一点,我可能会使用以下命令,但它显然太乱了,我认为可能有一些简单的方法可以做到这一点。
print '[',
for i in range(0, len(x) - 1):
print '{0:5.4f}, '.format(x[i]),
print '{0:5.4f}]'.format(x[len(x) - 1])
有人可以就此提出一些建议吗?
答案 0 :(得分:3)
使用列表理解:
>>> x = [1.2, 3.4, 5.7, 7.8]
>>> x1 = ['{0:5.4f}'.format(i) for i in x]
>>> x1
['1.2000', '3.4000', '5.7000', '7.8000']
列表理解是一个看起来像这样的扁平化版本:
>>> x1 = []
>>> for i in x:
... x1.append('{0:5.4f}'.format(i))
...
>>> x1
['1.2000', '3.4000', '5.7000', '7.8000']
答案 1 :(得分:2)
您可以使用map
print map('{0:5.4f}'.format,x)
如果您使用的是python 3,请执行:
print list(map('{0:5.4f}'.format,x))
答案 2 :(得分:1)
format
的替代方案,您也可以使用%
:
l = [1.2, 3.4, 5.7, 7.8]
In [182]: list(map(lambda x: '%.4f' % x, l))
Out[182]: ['1.2000', '3.4000', '5.7000', '7.8000']
使用时间,您可以看到%
比format
输出快一点:
In [189]: %timeit list(map(lambda x: '%.4f' % x, l))
100000 loops, best of 3: 3.96 us per loop
In [190]: %timeit list(map('{0:5.4f}'.format,l))
100000 loops, best of 3: 4.69 us per loop
In [192]: %timeit ['{0:5.4f}'.format(i) for i in x]
100000 loops, best of 3: 12.4 us per loop