我的程序需要检查二维数组中的每个元素,并使用旧数组的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)
有关的问题,因为初始化只是为了复制当前/旧数组的维度而已。