Python:如何独立编辑列表的副本?

时间:2015-04-01 10:29:50

标签: python list copy nested

我有一个嵌套的list A。然后我让list B=list A。当我尝试使用B[1][2]=2更改某些元素来编辑列表B时,list A[1][2]也会发生变化。

为什么会发生这种情况?

4 个答案:

答案 0 :(得分:0)

因为您正在分配引用,所以列表B实际上指向列表A.您必须使用列表的副本。这里回答:

python list by value not by reference

答案 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]的副本而不是同一个列表,您无法单独编辑它们。