在Python 2.7中初始化扫雷器板时遇到问题。到目前为止,这是我的代码:
class Minesweeper():
def __init__(self, size, num_bombs):
# Initialize board of zeros
self.board = [[0]*size]*size
self.game_over = False
self.size = size
self.add_bombs(num_bombs)
def add_bombs(self, num_bombs):
# Add bombs
for i in range(num_bombs):
row = randint(0, self.size-1)
column = randint(0, self.size-1)
self.board[row][column] = 'B'
print self.board
由于某种原因,我的add_bombs
代码正在相同地操纵板子的每个子阵列,我也不知道为什么。
即。 x = Minesweeper(5,2)
的结果是:
[[0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B'], [0, 0, 0, 'B', 'B']]
而不是总共增加2枚炸弹。有人看到我在做什么错吗?
答案 0 :(得分:0)
将空零列表初始化为:
[[0] * size for _ in range(size)]
这将创建每个子列表的副本,而不是创建对同一列表的引用。