我对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
答案 0 :(得分:3)
问题出在
行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)
答案 1 :(得分:-1)
告诉GTYH访问与GTRed
所引用的相同的列表 可以试试 GTYH = GTRed [:]这将创建列表的新实例