0
我在解决Python中的8个难题时遇到了BFS问题。我需要移动方法来返回一个新的拼图,而不是修改原来的拼图。下面的输出显示原始拼图正在被修改,而不是正在生成的新拼图。我试图复制,但没有奏效,列表没有深层复制。有没有一种简单的方法可以从原件创建新对象?修改原始变量而不是创建新变量的Python
def move(puzzle, direction):
# find where the zero (gap) is and swap in the given direction
row_count = 0
for row in puzzle:
if '0' in row:
gapx = row.index('0')
gapy = row_count
row_count = row_count + 1
# move it accordingly, as long as the move is legal
if direction == 'up' and (gapy==1 or gapy==2):
temp = puzzle[gapy-1][gapx]
puzzle[gapy-1][gapx] = '0'
puzzle[gapy][gapx] = temp
return puzzle
pretty_print(puzzle_state)
new_puzzle = move(puzzle_state, 'up')
pretty_print(puzzle_state)
输出:
123
804
765
103
824
765
为什么你认为你不能'deepcopy'列表? – 2014-09-30 22:52:59
看起来我错了。谢谢! – mobone 2014-09-30 22:54:24