Я написал класс для создания и управления многомерным списком, который представляет сетку 9 x 9.У меня есть метод, который производит этот список.Список создается нормально, но когда я пытаюсь добавить его к определенному индексу, он добавляется ко всем спискам.
class Grid:
def __init__(self):
self.size = range(9)
self.grid = self.make_new_grid([])
def make_new_grid(self, contents):
grid = []
for row in self.size:
grid.append([])
for column in self.size:
grid[row].append(contents)
return grid
grid = Grid()
grid.grid[4][5].append(8)
print('class grid', grid.grid)
Вывод:
class grid [[[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]], [[8], [8], [8], [8], [8], [8], [8], [8], [8]]]
Чтобы проверить это,Я жестко закодировал ту же сетку и сделал то же самое.Вывод, который я получил, был таким, как ожидалось.
compare_grid = [[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []]]
compare_grid[4][5].append(8)
print(compare_grid)
Вывод:
comparison grid [[[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [8], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []], [[], [], [], [], [], [], [], [], []]]
Наконец я проверил, были ли равны сетка, созданная классом, и моя жестко заданная сетка:
grid = Grid()
compare_grid = [[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []],
[[], [], [], [], [], [], [], [], []]]
print(grid.grid==compare_grid)
Вывод:
True
Я пытался разобраться в этой проблеме некоторое время, но, похоже, не могу найти ответ.