5

Ich habe eine Liste von Schwimmern in Python und wenn ich es in einen String konvertieren, erhalte ich den follwoingPython eine Liste von float zu String konvertiert

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 

Dieser Schwimmer hat zwei Stellen nach dem Komma, wenn ich sie erstellt (ich glaube so),

Dann habe ich

str(mylist) 

Wie kann ich einen String mit 2 Stellen nach dem Komma zu bekommen?

======================

Lassen Sie mich genauer sein:

Ich möchte wie „etwas bekommen [1883,95, 1878.33, 1869.43, 1863.40] "

Ich brauche danach einen String-Vorgang. Zum Beispiel + = "! \ T!"

Ich möchte das Endergebnis eine Zeichenfolge sein und ich möchte die Separatoren behalten.

Natürlich wissen wir alle, wie man es in einer Schleife macht, aber hoffentlich kann jemand eine sehr intelligente & elegante Weise dazu kommen.

von @senshin den folgenden Code beispielsweise arbeitet inspiriert, aber ich denke, es gibt eine Möglichkeit, besser

msg = "[" 
for x in mylist: 
    msg += '{:.2f}'.format(x)+',' 
msg = msg[0:len(msg)-1] 
msg+="]" 
print msg 

Dank ist!

Antwort

9

Verwenden Sie die Zeichenfolgenformatierung, um die gewünschte Anzahl von Dezimalstellen zu erhalten.

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> ['{:.2f}'.format(x) for x in nums] 
['1883.95', '1878.33', '1869.43', '1863.40'] 

Das Stringformat {:.2f} bedeutet „eine Zahl Festkomma-Druck (f) mit zwei Stellen hinter dem Komma (.2)“. str.format wird die Zahl automatisch korrekt runden (vorausgesetzt, Sie haben die Zahlen mit zwei Dezimalstellen an erster Stelle eingegeben. In diesem Fall reicht der Gleitkommafehler nicht aus, um die Rundung zu stören).

+0

das funktioniert, ich habe [ '1883,95', '1878,33', '1869,43', '1863,40'] jedoch kann ich so etwas wie „get [1883,95, 1878.33, 1869.43, 1863.40] "? Ich brauche danach eine String-Operation. Danke! – Niebieski

+0

@Niebieski Willst du eine String-Darstellung der ganzen Liste? Ich bezweifle sehr, dass du das _actually_ willst, aber du kannst einfach' str () 'auf der Liste, um etwas zu schließen. – senshin

+0

Ich möchte tun + ="! \ t! ", oder eine ähnliche Operation – Niebieski

1
map(lambda n: '%.2f'%n, [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]) 

map() ruft das aufrufbare in dem ersten Argument für jedes Element in der Liste weitergegeben/iterable als zweites Argument übergeben.

+1

Bitte fügen Sie eine Erklärung in Ihre Antwort ein Code-only Antworten selten helfen Menschen lernen, die (im Idealfall) was wir hier zu tun sind – BradleyDotNET

+0

@Bradley Done! Happy? :) Alt Aber ich bin nicht ganz damit einverstanden, dass «Nur-Code-Beispiele den Menschen selten beim Lernen helfen». –

0

Sie sich von den befreien 'Marken:

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> '[{:s}]'.format(', '.join(['{:.2f}'.format(x) for x in nums])) 
'[1883.95, 1878.33, 1869.43, 1863.40]' 
  • [' {: .2f}.‘Format (x) für x in nums] macht eine Liste von Strings, wie sie in dem akzeptierten Antworten.
  • ',' .join ([list]) gibt eine Zeichenfolge mit ',' zwischen den Listenelementen zurück.
  • '[{: s}]' '. Format (joined_string) fügt die Klammern hinzu.