2016-04-11 45 views
1

Numaraları olan iki listeye sahibim.Listedeki listelerde dolaşmak

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

Ben iki listede üzerinde döngü istiyoruz ve aynı şekilde sayıları biçimlendirmek:

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(",", ".") 

baskı

print(str(myformatlists[i]) 

doğru yeni değerler verir

ama

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

hala eski listeleri verir.
Neden for döngüm, değerleri myformatlists [i] içindeki liste adına atar?

Forformatlists içindeki for döngüsünün çıktısını listeye nasıl atayabilirim?

cevap

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

myformatlists[i] rebinds, bu myformatlists orijinal öğeyi değiştirmez.

Sen dilim gösterimi kullanılarak myformatlists[i] bir INPLACE güncelleştirme gerçekleştirebilirsiniz: Bu orijinal listeyi dönüşecek

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

.

Ama x liste anlama becaue tanımlı değil yeniden koduyla ilgili bir sorun olduğuna dikkat tamamlanmamış:

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

O re.sub olmalı ve belki de dinlenme olmalıdır:

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

Teşekkürler :) Yapmam gereken tek şey, mysformatistleri [i] '' myformatlist'leri [i] [:] 'değiştirmek değil mi? – Reman

+0

@Reman: evet. ve ikinci liste kavramasını düzeltin (ama bu muhtemelen bir yazım hatasıdır). – mhawke

+0

no, bir tür değil. Regex modülünü kullanırım ve re modülünü kullanmıyorum. Örneğimde “import regex” i belirtmeyi unuttum. Harika cevabınız için teşekkürler! – Reman