im试图格式化此列表,以使其保持科学计数形式,但保留小数位数较少。但是下面的脚本似乎只是将所有内容四舍五入到最接近的整数
import numpy
A=[9.380726789802627885e-23, 9.764534271051429814448e-23, 1.0168775777415136679e-22, 1.0573873175565650064e-22, 1.098630609702e-2, 1.14060439559859689e-22]
B=[]
for i in range(len(A)):
c=numpy.format_float_scientific(i, precision=5)
B.append(c)
print(B)
B打印为
['0.e+00', '1.e+00', '2.e+00', '3.e+00', '4.e+00', '5.e+00']
我误解了“精度”吗?
答案 0 :(得分:1)
for i in A:
修复了您的代码,但随后您应该将i
重命名为更有意义的名称。
您的range(len(A))
实际上是range(6)
,它等效于[0, 1, 2, 3, 4, 5]
(在Python 3.x中不是完全),后者是代码输出的来源。
也许您忘记写A[i]
而不是i
作为format_float_scientific
的第一个参数。但这本来是遍历列表的低效率方法。
获得列表结果的最“ Python式”方法是使用列表理解,但是对理解的理解并不总是那么容易,并且您可以在没有它们的情况下生存一段时间。
答案 1 :(得分:0)
您的循环不正确。在您的代码中,它应该类似于
import numpy
A=[9.380726789802627885e-23, 9.764534271051429814448e-23,
1.0168775777415136679e-22, 1.0573873175565650064e-22,
1.098630609702e-2, 1.14060439559859689e-22]
B=[]
for i in A:
c=numpy.format_float_scientific(i, precision=5)
B.append(c)
print(B)
您还可以利用列表理解功能获得更干净的解决方案:
B = [numpy.format_float_scientific(i, precision=5) for i in A]
两者都会为您提供所需的输出。