2012-11-10 65 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