我知道列表别名是Python中的一个问题,但我想不出办法。
def zeros(A):
new_mat = A
for i in range(len(A)):
for j in range(len(A[i])):
if A[i][j]==0:
for b in range(len(A)):
new_mat[b][j] = 0
else:
new_mat[i][j] = A[i][j]
return A
即使我根本不更改A的值,当我返回A时,它仍然被修改:
>>> Matrix = [[1,2,3],[5,0,78],[7,3,45]]
>>> zeros(Matrix)
[[1, 0, 3], [5, 0, 78], [7, 0, 45]]
这个列表是别名吗?如果是这样,如何在不发生别名的情况下修改2D数组的元素?谢谢,谢谢<3。
new_mat = A
不会创建新矩阵。您只是给对象也赋予了新的名称A
。如果是数字列表,则可能要使用copy.deepcopy创建完整副本;如果是numpy数组,则可以使用copy方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句