Python指针错误:意外的变量突变


def divide_grid():
    G = [[1, 'p'], [2, 'g'], [3, 'r'], [4, 'p']]
    print(G)
    for color in ['p','g']:  
        lst = G
        process(lst)
        print(G)
def process(grid):
    grid[0][1] = 'g'

我在python中有这段代码,当我运行它时,我希望G保持不变(相同的东西应该打印3次)。我的印象是python不使用指针指向变量?然而,当我运行divide_grid()我得到这个:

[[1, 'p'], [2, 'g'], [3, 'r'], [4, 'p']]
[[1, 'g'], [2, 'g'], [3, 'r'], [4, 'p']]
[[1, 'g'], [2, 'g'], [3, 'r'], [4, 'p']]

为什么会发生这种情况?我如何修复它,这样我就可以编辑网格的过程版本,而不改变原来的G?这是我的代码的淡化版本,因为它的工作,我需要能够编辑和返回网格从这个过程的功能,而不改变原来的。

当你将G赋值给lst时,它是一个指针。

你需要使用deepcopy来避免这种情况:

from copy import deepcopy
lst = deepcopy(G)

最新更新