2017-06-26 12 views
2

Ich habe eine Reihe von Zahlen in dem wissenschaftlichen Format in einer Liste eine Zahl in wissenschaftlichen Format-String konvertieren:Python:

A = [1e-2, 1e-3, 1e-4] 

Was ich tun möchte, ist A in B zu ändern:

B = ['1e-2','1e-3','1e-4'] 

ich dachte, die Umwandlung von getan werden kann:

B = [str(A[ii]) for ii in range(len(A))] 

Aber es gibt:

B = ['0.01','0.001','0.0001'] 
+0

'Format (num, "e")' vielleicht? –

+0

@ TadhgMcDonald-Jensen Das ist eigentlich ziemlich ordentlich. Allerdings habe ich es selbst ausprobiert, und es gibt aus: "1.000000e-02". Was für mich * ist * das gleiche, aber nicht * genau * wie erwartet. Trotzdem, verdammt großartig. Wusste nicht, Format hat das für Zahlen so ausgedrückt. – idjaw

+0

@ TadhgMcDonald-Jensen: können Sie genauer sein, wo Sie die Formatfunktion – jingweimo

Antwort

2

Versuchen ['{:.0e}'.format(float(x)) for x in A]

+3

Sie brauchen kein 'str.format', und Sie brauchen den' float'-Aufruf nicht. '[format (x, '.0e') für x in A] funktioniert genauso gut. – vaultah

+0

@vaultah: Beide sind gute Lösungen !! Aber deine sind besser! – jingweimo