我试图在不改变矩阵b的情况下改变[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)
[[1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 3, 4], [1, 2, 3, 4]]
[['WWWW', 2, 3, 4], [1, 2, 3, 4]]
[['WWWW', 2, 3, 4], [1, 2, 3, 4]]
这有效但似乎有更好的方法吗?
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)
[[1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 3, 4], [1, 2, 3, 4]]
[['WWWW', 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 3, 4], [1, 2, 3, 4]]
答案 0 :(得分:0)
列表是可变的。
This link explains in detail what mutable objects are
这不适用于您的代码,因为您使用的是嵌套列表。如果你只做一个[0] ="某事",这不会反映在b中但是如果你做这样的事情[0] [0] ="哇&# 34;这个会。
b = a[:]
a和b中的嵌套列表仍指向同一块内存。
要解决这个问题,请尝试:
import copy
a = [[1,2,3,4],[1,2,3,4]]
b = copy.deepcopy(a)