我有一个嵌套的list A
。然后我让list B=list A
。当我尝试使用B[1][2]=2
更改某些元素来编辑列表B时,list A[1][2]
也会发生变化。
为什么会发生这种情况?
答案 0 :(得分:0)
因为您正在分配引用,所以列表B实际上指向列表A.您必须使用列表的副本。这里回答:
答案 1 :(得分:0)
试试这个:
A = [[1,2,3],[4,5,6],[1,2,3,4]]
B = []
for i in range(len(A)):
c = list(A[i])
B.append(c)
然后你就可以在不改变A的情况下改变B.
答案 2 :(得分:-1)
而不是:
listB = listA
尝试:
listB = listA[:]
这里有一个很好的解释为什么会发生这种情况:
http://robertheaton.com/2014/02/09/pythons-pass-by-object-reference-as-explained-by-philip-k-dick/
答案 3 :(得分:-2)
编辑解释整个过程...... :
list = [[],[],[],[]]
a = 0
b = 3
list[a] = [1,2,3]
list[b] = list[a][:]
现在list[b]
是list[a]
的副本而不是同一个列表,您无法单独编辑它们。