每当连续替换一个数字时,它就会改变整个变量

在我制作的这个游戏中,3 是人们无法移动的方块,4 是陷阱。陷阱本来就是隐藏的,但每当我用 Row 变量隐藏它们时,它都会更改实际的 Board 变量,我从整个程序中取出了错误的代码,它看起来像这样:


Board = [[1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [3, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 4, 0], [0, 0, 4, 0, 0, 0, 0, 4], [0, 0, 3, 0, 4, 0, 0, 0], [0, 0, 3, 3, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 2]]


for Loop in range(len(Board)):

    Row = Board[Loop]

    for Loop2 in range(len(Row)):

        if Row[Loop2] == 4:

            Row[Loop2] = 0

    print(Row)

    print(Board)

每当数字 4 被 0 替换时,它就会被 0 替换。这仅意味着发生在变量 Row 上,但由于某种原因也发生在 Board 上。有什么理由吗?


料青山看我应如是
浏览 61回答 1
1回答

Cats萌萌

Row = Board[Loop]Row 指向相同的内存位置,这就是为什么其中的更改也会复制到 Board 的原因。用于Row = Board[Loop][:]创建副本
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python