Python 2.7 如何重新分配此矩阵的第一个索引';a';不改变';b';?

Python 2.7 如何重新分配此矩阵的第一个索引';a';不改变';b';?,python-2.7,Python 2.7,我试图在不更改矩阵b的情况下更改a[0][0]。有没有一个简单的方法可以做到这一点?我试着使用b=list(a)和b=a[:],但没有成功 a = [[1,2,3,4],[1,2,3,4]] b = a print(a) print(b) a[0][0] = "WWWW" print(a) print(b) 输出: 这很有效,但似乎还有更好的办法 a = [[1,2,3,4],[1,2,3,4]] b = [[0,0,0,0], [0,0,0,0]] for i in range

我试图在不更改矩阵b的情况下更改a[0][0]。有没有一个简单的方法可以做到这一点?我试着使用b=list(a)和b=a[:],但没有成功

a = [[1,2,3,4],[1,2,3,4]]

b = a


print(a)
print(b)

a[0][0] = "WWWW"

print(a)
print(b)
输出: 这很有效,但似乎还有更好的办法

a = [[1,2,3,4],[1,2,3,4]]

b = [[0,0,0,0], [0,0,0,0]]

for i in range(len(a)):
    for j in range(len(a[i])):
        b[i][j] = a[i][j]


print(a)
print(b)

a[0][0] = "WWWW"

print(a)
print(b)
输出: 列表是可变的

这在代码中不起作用,因为您使用的是嵌套列表。如果你只做了一个[0]=“某物”,这不会反映在b中,但是如果你做了像这样的事情,[0][0]=“哇”这会

 b = a[:] 
a和b中的嵌套列表仍然指向同一内存块

要解决此问题,请尝试:

import copy
a = [[1,2,3,4],[1,2,3,4]]
b = copy.deepcopy(a)

 b = a[:] 
import copy
a = [[1,2,3,4],[1,2,3,4]]
b = copy.deepcopy(a)