我有一个从数据文件导入的列表。
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')它可以工作,但看起来并不美观。有没有办法让它看起来更好看?
发布于 2015-02-05 06:18:21
您可以像这样在一行中完成此操作:
newline=["{:.10f}".format(float(i)) for i in lines]
jitterfile.write(join(newline)+'\n')值得注意的是,您的第三条指令newline=map(str,newline)是多余的,因为列表中的条目已经是字符串,所以没有必要强制转换它们。
发布于 2015-02-05 06:30:43
map函数也接受lambda,因为format的结果是string,您不需要在列表中应用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') https://stackoverflow.com/questions/28332555
复制相似问题