有一个数组“arr”。我复制了另一个数组“xyz”。我想更新数组“xyz”。但得到错误的结果。
metrix = [[1, 2, 2], [2, 2, 2], [2, 2, 1]]
n,m = 3,3
def package(n,m,arr):
xyz = arr.copy()
for i in range(n):
for j in range(m):
if arr[i][j] == 1:
xyz[i][j]=0
print("arr",arr)
print("xyz",xyz)
package(n,m,metrix)
对/对:
arr [[0, 2, 2], [2, 2, 2], [2, 2, 0]]
xyz [[0, 2, 2], [2, 2, 2], [2, 2, 0]]
预计开工时间:
arr [[1, 2, 2], [2, 2, 2], [2, 2, 1]]
xyz [[0, 2, 2], [2, 2, 2], [2, 2, 0]]
最佳答案
这是因为 array.copy 执行的是浅拷贝。 来源 - https://docs.python.org/3/tutorial/datastructures.html
如果您只有一个简单数据类型的数组——字符串、数字等,浅拷贝就可以了。但在您的情况下,它是一个数组数组。
改用 deepcopy。
from copy import deepcopy
arr = [ [1,2,3], [1,2,3] ]
arr_copy = deepcopy(arr)
arr_copy[0][0] = 7
print(arr)
print(arr_copy)
输出-
[[1, 2, 3], [1, 2, 3]]
[[7, 2, 3], [1, 2, 3]]
关于python - 使用 arr copy() 函数时得到错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66326627/