【发布时间】:2018-01-14 06:27:38
【问题描述】:
我的程序需要检查二维数组中的每个元素,并用旧数组的 countNeigh(x,y) 填充一个新数组 [countNeigh 返回旧动物数组中存活邻居的数量]
我将新数组初始化为当前/旧数组的副本,并使用两个 for 循环来检查每个单独的元素并填充新数组:
newAnimalArr = isAnimalArr
for x in range(len(isAnimalArr)):
for y in range(len(isAnimalArr[x])):
newAnimalArr[x][y] = countNeigh(x,y)
上面的代码用不正确的值填充了 newAnimalArr。我 98% 确信这不是 countNeigh(x,y) 函数中的错误,因为稍微更改代码(如下所示)时,newAnimalArr 具有正确的值。
newAnimalArr = []
for x in range(len(isAnimalArr)):
rowArr = []
for y in range(len(isAnimalArr[x])):
rowArr.append(countNeigh(x,y))
newAnimalArr.append(rowArr)
-第一段代码有什么问题?数组的初始化?还是每个元素的赋值语句?
我之前读过二维数组q = [[None]*5]*4 的初始化是一个被多次引用的数组(这会导致单个元素的分配通过该单个数组的所有重复项传播);即使我的数组中出现类似的问题,那么赋值语句newAnimalArr[x][y] = countNeigh(x,y) 也应该存在问题,因为初始化只是为了复制当前/旧数组的维度
【问题讨论】:
标签: arrays python-2.7 initialization variable-assignment