Skip to main content
 首页 » 编程设计

python之Python 中的二维数组是否存在别名

2025年05月04日16kerrycode

我知道列表别名是 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]] 

这个列表有别名吗?如果是这样,您如何在不发生混叠的情况下修改二维数组的元素?非常感谢 <3.

请您参考如下方法:

new_mat = A 不会创建新矩阵。您只是为您也知道为 A 的对象指定了一个新名称。如果它是数字列表的列表,您可能需要使用 copy.deepcopy创建一个完整的副本,如果它是一个 numpy 数组,你可以使用 copy方法。