使用MiniMax算法实现井字棋,下面是问题的记录
源代码地址:gitee仓库地址
python中列表的浅复制和深复制
在函数传递中,如果实参传递可变数据类型(list、set、dict)实际上传递的是引用,在函数中的改变将直接影响原始数据
如下图所示,在传递参数时,如果直接传递board
,在函数中的改变将直接影响原始数据
def minimax(board):
"""得到当前棋盘的执棋手"""
current_player = player(board=board)#在函数中的改变将直接影响原始数据
tem_board = copy.deepcopy(board)
best = []
score = 0
if current_player == X:
best = [-1, -1, -infinity]
else:
best = [-1, -1, infinity]
next_step = actions(board=tem_board)
- 浅复制:对于所有数据类型均做浅复制,即对于基本数据类型做深拷贝,对组合数据类型做浅拷贝,基本数据类型与原来不相关,组合数据类型与原来相关
los = [1,2,[1,2]]
lis = los.copy()
los[1] = 0
los[2][0] = 0
print(los)