将浮点列表限制为10位数

时间:2015-02-04 22:16:30

标签: python dictionary floating-point

我从数据文件导入列表。

lines=['1628.246', '100.0000', '0.4563232E-01', '0.4898217E-01', '0.3017656E-02', '0.2271272', '0.2437533', '0.1500232E-01', '0.4102987', '0.4117742', '0.5461504E-02', '2.080838', '0.5527303E-03', '-0.4542367E-03', '-0.2238781E-01', '-0.8196812E-03', '-0.3796306E-01', '-0.7906407E-03', '-0.6738000E-03', '0.000000']

我想生成一个新列表,包括相同10位数的所有元素并放回文件 我这样做了:

newline=map(float,lines)
newline=map("{:.10f}".format,newline)
newline=map(str,newline)
jitterfile.write(join(newline)+'\n')

它有效,但看起来不漂亮。有什么想让它看起来很好看吗?

2 个答案:

答案 0 :(得分:3)

你可以在一行中这样做:

    newline=["{:.10f}".format(float(i)) for i in lines]
    jitterfile.write(join(newline)+'\n')

值得注意的是,您的第三条指令newline=map(str,newline)是多余的,因为列表中的条目已经是字符串,因此不必使用它们。

答案 1 :(得分:3)

map函数也接受lambda,format的结果是你不需要在列表中应用str的字符串,你需要使用带分隔符的join喜欢',':

>>> newline=map(lambda x:"{:.10f}".format(float(x)),newline)
>>> newline
['1628.2460000000', '100.0000000000', '0.0456323200', '0.0489821700', '0.0030176560', '0.2271272000', '0.2437533000', '0.0150023200', '0.4102987000', '0.4117742000', '0.0054615040', '2.0808380000', '0.0005527303', '-0.0004542367', '-0.0223878100', '-0.0008196812', '-0.0379630600', '-0.0007906407', '-0.0006738000', '0.0000000000']
jitterfile.write(','.join(newline)+'\n')