我的程序需要檢查二維數組中的每個元素,並使用舊數組的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)
有關的問題,因爲初始化只是爲了複製當前/舊數組的維度而已。