Python 8puzzle 的最后一个功能代码
Last function code of 8puzzle in Python
def result(matrix):
matrix2=matrix
for a in possible_moves(matrix2):
matrix2=matrix
print()
liste=swap_blank_tile(matrix2,a)
print(liste)
print(matrix)
我在 Python 中有此代码。 Swap_blank_tile 函数从旧矩阵创建新矩阵。
我想从我的第一个矩阵中为 "liste" 赋值。因此我在 "swap_blank_tile" 函数中使用了 matrix2,但是 "matrix" 也受到 "swap_blank_tile" 函数的影响,但我不想要它。只有 matrix2 必须受此函数的影响。我无法解决为什么矩阵也受此功能的影响。
matrix
是什么数据类型?
可能是列表的列表,在这种情况下你需要制作一个完整的矩阵副本。使用 copy.deepcopy()
:
from copy import deepcopy
matrix2 = deepcopy(matrix)
原因是 matrix2 = matrix
不复制 matrix
,它只是将名称 matrix2
绑定到同一个对象。因此,对对象所做的任何更改都可以从两个变量中看到。 deepcopy()
将下降到对象中并复制任何嵌套对象,从而产生 2 个独立对象。
在您的代码中:
matrix2=matrix
matrix2
和 matrix
仍然是对同一个对象的引用,所以如果你改变一个,你就会改变另一个。您可能想要创建一个深拷贝。
from copy import deepcopy
def result(matrix):
matrix2=deepcopy(matrix)
for a in possible_moves(matrix2):
matrix2=deepcopy(matrix)
print()
liste=swap_blank_tile(matrix2,a)
print(liste)
print(matrix)
def result(matrix):
matrix2=matrix
for a in possible_moves(matrix2):
matrix2=matrix
print()
liste=swap_blank_tile(matrix2,a)
print(liste)
print(matrix)
我在 Python 中有此代码。 Swap_blank_tile 函数从旧矩阵创建新矩阵。 我想从我的第一个矩阵中为 "liste" 赋值。因此我在 "swap_blank_tile" 函数中使用了 matrix2,但是 "matrix" 也受到 "swap_blank_tile" 函数的影响,但我不想要它。只有 matrix2 必须受此函数的影响。我无法解决为什么矩阵也受此功能的影响。
matrix
是什么数据类型?
可能是列表的列表,在这种情况下你需要制作一个完整的矩阵副本。使用 copy.deepcopy()
:
from copy import deepcopy
matrix2 = deepcopy(matrix)
原因是 matrix2 = matrix
不复制 matrix
,它只是将名称 matrix2
绑定到同一个对象。因此,对对象所做的任何更改都可以从两个变量中看到。 deepcopy()
将下降到对象中并复制任何嵌套对象,从而产生 2 个独立对象。
在您的代码中:
matrix2=matrix
matrix2
和 matrix
仍然是对同一个对象的引用,所以如果你改变一个,你就会改变另一个。您可能想要创建一个深拷贝。
from copy import deepcopy
def result(matrix):
matrix2=deepcopy(matrix)
for a in possible_moves(matrix2):
matrix2=deepcopy(matrix)
print()
liste=swap_blank_tile(matrix2,a)
print(liste)
print(matrix)