2016-09-14 4 views
0

Ich bin so traurig, dass ich so dumme Frage fragen aber könnten Sie mir bitte helfen Liste der Listen-Format ("% .2f") zum Beispiel:Python Formatierung alle Werte in der Liste der Listen

a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577]] 

I verwendet:

for x in a: 
    a = ["%.2f" % i for i in x] 
    print (a) 

OUT:

['1.34', '7.42'] 
['6.97', '4.55'] 

Aber ich möchte meine Liste von Listen erhalten OUT:

[['1.34', '7.42'] ,['6.97', '4.55']] 
+1

Also einfach 'a' an eine neue Liste anhängen, anstatt 'print()' it? Da Sie bereits wissen, wie Sie ein Listenverständnis verwenden, verschachteln Sie einfach: 'output = [['% .2f'% i für i in x] für x in a]'. –

+1

eigentlich ist 'a' in diesem Fall eine schlechte Wahl des Variablennamens, da Sie seine Elemente von Anfang an durchlaufen. Wie wäre es mit 'b' wie:' b + = ["% .2f"% i für i in x] '? –

+0

@ Martijn Pieters Danke. Ich habe List List Verständnis, aber ich habe Fehler in der Syntax –

Antwort

2

In einer einfacheren Art und Weise, können Sie die Verwendung derselben Liste Verständnis erreichen, wie:

>>> a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577]] 
>>> [["%.2f" % i for i in l] for l in a] 
[['1.34', '7.42'], ['6.97', '4.55']] 

Infact auch Code in Ordnung ist. Anstatt zu drucken, müssen Sie nur append die Werte, die Sie drucken, zu einer Liste

+1

Cleverer Einsatz von listcomp! –

+0

@ Moinuddin Quadri Wird dieses Skript in beliebiger Länge funktionieren? Ich meine, wenn ich 1000 Liste in einer Liste mit unterschiedlicher Länge habe –

+0

@ProtossReed: Ja, soweit es eine Liste von Listen ist (die ich glaube, wird immer basierend auf der Frage wahr). Die Länge der Gegenstände spielt keine Rolle. –

1

Eine allgemeinere Lösung erfordert nur ein paar Zeilen. Es formatiert rekursiv Zahlen, Listen, Listen von Listen beliebiger Schachtelungstiefe.

def fmt(data): 
    if isinstance(data, list): 
     return [fmt(x) for x in data] 
    try: 
     return "%.2f" % data 
    except TypeError: 
     return data 


a=[[1.343465432, 7.423334343], [6.967997797, 4.5522577], [10, [20, 30]], 40] 
print(fmt(a)) 
# [['1.34', '7.42'], ['6.97', '4.55'], ['10.00', ['20.00', '30.00']], '40.00'] 
+0

danke. Sieht großartig aus –

Verwandte Themen