0

我对列表、排序和索引有问题的理解和解决以下问题。这是代码示例:

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”的。我怎样才能防止它发生?换句话说。我不想改变“a”的值,不管“b”或“c”发生了什么

4

1 回答 1

1

在您的代码中,当您编写时:

c.append(b[j])

您正在添加c对 object 的引用b[j]

如果你想独立于b,你必须做一个对象的深拷贝ca

import copy
b = sorted (copy.deepcopy(a), lambda a : a[1])
于 2012-11-10T18:00:05.717 回答