Когда вы используете этот синтаксис для создания многомерного массива
arr = [[0]*int(numColumns)]*int(numRows)
, ссылка на один и тот же элемент создается много раз, поэтому, если вы присваиваете значение одному из них, вы в основном меняете все элементы потому что все они ссылаются на одни и те же данные. Например:
arr = [[0]*int(numColumns)]*int(numRows)
arr[0][1]=2
print(arr)
вывод
[[0, 2], [0, 2], [0, 2], [0, 2]]
Я изменил только один элемент, и это результат. вы должны использовать:
arr = [[0 for i in range(int(numColumns))] for j in range(int(numRows))]
arr[0][1]=2
print(arr)
вывод:
[[0, 2], [0, 0], [0, 0], [0, 0]]