Jeżeli jesteś pewien, że nie potrzebują więcej niż ustaloną liczbę miejsc po kropce dziesiętnej, a następnie:
>>> from numpy import r_
>>> a = r_[10**(-9), 10**(-3), 3*10**(-3), 6*10**(-3), 9*10**(-3), 1.5*10**(-2)]
>>> for x in a: print "%.1e"%x
...
1.0e-09
1.0e-03
3.0e-03
6.0e-03
9.0e-03
1.5e-02
Połów jest to, że byli do korzystania %.0e
jako format, ostatni Numer zostanie wydrukowany jako 1e-2
EDIT: Ponieważ używasz matplotlib
, to już zupełnie inna historia: można użyć silnik renderowania tex. Szybkie i-brudny przykład:
fig = plt.figure()
ax = fig.add_subplot(111)
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$ %s \times 10^{%s}$" % (l[0], l[1])
ax.set_title(x_str)
plt.show()
które rzeczywiście być trochę czystsze z nowego formatowania .format
strun.
EDIT2: Tylko dla kompletności i przyszłości, oto moje zdanie na drodze PO jest z uwagami:
x = 1.5*10**(-2)
l = ("%.0e"%x).split("e")
x_str = r"$%s \times 10^{%s}$" % (l[0], str(int(l[1])))
Tutaj jestem konwersji do int iz powrotem, aby uniknąć zer: -02
- >-2
itp
możesz również spróbować str.format - http://docs.python.org/2/library/string.html#formatstrings – dmg
W jaki sposób tworzysz fabułę? Czy jest to tylko jakaś grafika podobna do ASCII, czy używasz 'matplotlib' lub innych bibliotek? – Bakuriu
czy ''% s 10^(% s) '% (numer1, numer2) 'działa? – dmg