我正在尝试实现一个简单的TicTacToe游戏,但我无法制作某个列表的浅表副本。虽然我给你新的价值只体现在SIM卡中,变化体现在“主”板无法在Python3中创建列表的浅表副本
SIZE = 3 # size of game board
PLAYERS = (PLAYER, COMPUTER) = "X", "O"
class TicTacToe(list):
""" Class handling game board """
def __init__(self, size=SIZE, players=PLAYERS):
""" Board size defaults to 3 """
super().__init__([[" " for idx in range(size)] for jdx in range(size)])
self._size = size
def winner_move(self, letter, range_):
""" Determine winner move - range_ members are tuples """
for tile in range_:
sim = self[:] # shallow copy of game board for simulation
sim[tile[0]][tile[1]] = letter
print("Current board:")
print(self)
# code makes some decisions here and continues
def get_empty(self):
""" Return empty places on board as a set of (row, col) """
return {(row, col) for row in range(self._size)\
for col in range(self._size) if self[row][col] == " "}
board = TicTacToe()
board.winner_move(PLAYER, board.get_empty())
: 下面是我的脚本最小提取物,呈现我的问题。我也试过
sim = list(self)
和
sim = [item for item in self]
但都给予同样的结果。
任何建议我做错了什么?
TicTacToe是一个2D结构,你真的需要浅而不深的复制? – Arpegius
@Arpegius是赖特,你需要深刻的复制 –