2012-11-10 96 views
0

我有問題理解和解決列表,排序和索引以下問題。下面是代碼例如:Python列表排序和索引

import random as rdm 
a=[] 
for i in range(3): 
    a.append([i,rdm.randint(-5,5)]) 
print a 
b = sorted(a,key=lambda a:a[1]) 
print b 
c = [] 
for j in range(len(b)): 
    c.append(b[j]) 
print c 
c[0][1] = 0 
print a 
print b 
print c 

通知如何改變「C」的一個值來改變「b」和「一」。我怎樣才能防止它發生?換一種說法。我不希望「a」的值改變並不重要「b」或「c」會發生什麼

+1

你實際上在處理**列表**而不是**數組**。如果你相應地修改了它,它會讓你的問題更清楚。 –

+1

標題更新爲列表而非數組。 – user1532056

回答

0

Congrajulations,歡迎來到參考工作的世界。

在你的代碼,當你寫:

c.append(b[j]) 

你加入到c一個參考對象b[j]

如果你想bc是的a獨立的,你必須執行對象的深拷貝

import copy 
b = sorted (copy.deepcopy(a), lambda a : a[1]) 
+0

謝謝你的教訓。有效。 – user1532056