我有一个非常简单的问题。我有一组花车
a = array([0.01,0.1,10,100,1000])
我想打印这个数组,以便最终结果看起来像
10$^-2$, 10$^-1$, ....
用%
命令可以吗?
a = [0.01,0.1,10,100,1000]
for x in a:
base,exp = "{0:.0e}".format(x).split('e')
print "{0}0$^{1}$".format(base,exp)
输出:
10$^-02$
10$^-01$
10$^+01$
10$^+02$
10$^+03$
将数字转换为科学计数法字符串:
s = string.format("%.3e",0.001)
然后用乳胶格式替换 e+ 或 e- :
s.replace("e+","$^{")
s.replace("e-","$^{")
然后附加乳胶结束括号:
s = s + "}$"
应该输出:
"1.000$^{-3}$"
作为单线:
["10$^{}$".format(int(math.log10(num))) for num in a]
或更清楚地说:
from math import *
def toLatex(powerOf10):
exponent = int( log10(powerOf10) )
return "10$^{}$".format(exponent)
nums = [10**-20, 0.01, 0.1, 1, 10, 100, 1000, 10**20]
[(x, toLatex(x)) for x in nums]
[(1e-20, '10$^-20$'),
(0.01, '10$^-2$'),
(0.1, '10$^-1$'),
(1, '10$^0$'),
(10, '10$^1$'),
(100, '10$^2$'),
(1000, '10$^3$'),
(100000000000000000000L, '10$^20$')]
试试这个:
for i in str(a):
print i
输出:
0.01
0.1
10.0
100.0
1000.0
如果您更喜欢科学记数法:
for i in str(a):
print '%.3e' % i
输出:
1.000e-02
1.000e-01
1.000e+01
1.000e+02
1.000e+03
'%.3e' 中的数字控制小数点右侧的位数。
编辑:如果您想在同一行打印所有内容,请在每个打印语句的末尾添加一个逗号“,”。