2016-04-11 6 views
1

Ich habe zwei Listen mit Nummern.Looping über Listen in der Liste

newlist  = [506.5, 133.0, 11104.2] 
totalcolumns = [9.2, 10024.5, 610.0, 1100.0] 

Ich möchte Schleife über beide Listen und formatieren Sie die Zahlen in der gleichen Art und Weise:

myformatlists = [newlist, totalcolumns] 

for i in range(0,len(myformatlists)): 
    myformatlists[i] = ['{0:,}'.format(x) for x in myformatlists[i]] 
    myformatlists[i] = [regex.sub("\.0?$", "", x).replace(".", "_").replace(",", ".") 

Druck

print(str(myformatlists[i]) 

gibt die richtigen neuen Werte

aber

print(str(newlist)) 
print(str(totalcolumns)) 

gibt immer noch die alten Listen.
Warum weist meine for-Schleife die Werte nicht dem Listnamen in myformatlists [i] zu?

Wie kann ich die Ausgabe der for-Schleife der Liste in myformatlists zuweisen?

Antwort

3
myformatlists[i] = ['{0:,}'.format(x) for x in myformatlists[i]] 

Rebind myformatlists[i], ist es nicht die ursprüngliche Nachricht von myformatlists verändern.

Sie können ein Inplace-Update von myformatlists[i] mit Slice-Notation ausführen:

myformatlists[i][:] = ['{0:,}'.format(x) for x in myformatlists[i]] 

Dies wird die ursprüngliche Liste mutieren.

Aber beachten Sie, dass es ein Problem mit dem Re-Code ist, wo x nicht becaue die Liste Verständnis definiert ist unvollständig:

myformatlists[i] = [regex.sub("\.0?$", "", x).replace(".", "_").replace(",", ".") 

Es re.sub sein sollte, und vielleicht sollte der Rest sein:

myformatlists[i] = [re.sub("\.0?$", "", x).replace(".", "_").replace(",", ".") for x in myformatlists[i]] 
+0

Danke :) Das einzige, was ich tun musste, war, 'myformatlists [i]' in 'myformatlists [i] [:]' zu ändern, oder? – Reman

+0

@Reman: ja. und fixiere das zweite Listenverständnis (aber das ist wahrscheinlich sowieso ein Tippfehler). – mhawke

+0

Nein, es ist kein Typ. Ich benutze das Regex-Modul und nicht das Re-Modul. Ich habe in meinem Beispiel "Import Regex" vergessen. Danke für deine tolle Antwort! – Reman