为什么我的函数'increment'对于其他函数创建的矩阵返回不同的值,而对于手动矩阵却返回不同的值?
n = 2
m = 3
indices = [[0,1],[1,1]]
def matrixpopulation(n,m):
row=[]
matrix=[]
row+=(0 for _ in range(0,m))
matrix+=(row for _ in range(0,n))
return matrix
def increment(indices,matrixa):
for v,k in indices:
for i in range(3):
matrixa[v][i]+=1
for i in range(2):
matrixa[i][k]+=1
return matrixa
matrixa=matrixpopulation(n,m)
filled_matrix=increment(indices,matrixa)
print(matrixpopulation(n,m))
print(filled_matrix)
manualmatrix=[[0,0,0],[0,0,0]]
print(manualmatrix)
print(increment(indices,manualmatrix))
答案 0 :(得分:1)
matrix+=(row for _ in range(0,n))
在此处创建矩阵时,实际上是将引用添加到相同的row
n次。当您修改一个“行”中的某个元素时,所有其他行也将被修改。例如:
a = [1, 2]
b = [a, a]
a[0] = 3
立即检查b
。