【发布时间】:2019-05-28 16:30:47
【问题描述】:
我编写了一个类来生成和操作代表 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
我已经尝试解决这个问题一段时间,但我似乎找不到答案。
【问题讨论】:
标签: python list class multidimensional-array append