gpt4 book ai didi

python - 为什么我的变量会在 python 的嵌套 for 循环中被覆盖?

转载 作者:行者123 更新时间:2023-12-01 05:51:37 24 4
gpt4 key购买 nike

我对 python 有点陌生,无法弄清楚为什么我的变量 GTRed 在指示的地方被覆盖。据我的理解,GTRed 在这一点上应该保持不变。我知道我可以通过使用“for x,y in xygrid:”之类的内容来减少嵌套 for 循环的数量,但这不会影响这一点。

非常感谢您的帮助。

亲切的问候

GTN = 0
GTRed = [[0 for j in range(5)] for i in range(4)]
GTYH = [[0 for j in range(5)] for i in range(4)]
for jred in range(4):
for ired in range(3):
GTRed = [[0 for j in range(5)] for i in range(4)]
GTRed[ired][jred]=11
GTRed[ired+1][jred]=1
GTRed[ired][jred+1]=1
GTRed[ired+1][jred+1]=1
for jyh in range(4):
for iyh in range(2):
GTYH = GTRed
if GTYH[iyh][jyh]==0 and GTYH[iyh+1][jyh]==0:
print GTRed
GTYH[iyh][jyh]=22
# The above line seems to somehow affect GTRed
print GTRed
GTYH[iyh+1][jyh]=2
GameTable[GTN] = GTYH
GTN = GTN + 1

最佳答案

问题出在行上

GTYH = GTRed

这两个变量指向相同的列表列表。

a = [0,1,2]
b = a
b[1] = 100
print a # prints [0, 100, 2]

解决方案(对于列表列表)是

GTYH = [x[:] for x in GTRed]

import copy

GTYH = copy.deepcopy(GTRed)

关于python - 为什么我的变量会在 python 的嵌套 for 循环中被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14054981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com