好的,以前使用相同的程序,我现在遇到了一个我应该预料到的问题;网格(可变宽度和高度)是基于代码来构造的,以交替创建列表的符号,然后这些列表作为嵌套列表存储在网格中。下面是一段代码,用于使列表(称为行)的奇数宽度是必要的。
1 - + -
2 + - +
3 - + -
if gridwidth % 2 != 0:
for i in range(gridwidth):
if i % 2 == 0:
line.append('-')
else:
line.append('+')
编辑 - 抱歉我不想用代码发送垃圾邮件;这些行被放入下面的列表网格中;
grid = []
for i in range(height):
if i % 2 == 0:
grid.append(line)
else:
grid.append(linerev)
然后通过范围(高度)将行附加到网格,并且还有另一个代码块来处理创建另一个列表(linerev)的交替行 - 我的问题是因为如何创建网格,如果我尝试更改其中的值表示将网格[0,0]转换为+或 - ,它将其沿着几行更改为网格[1,0],网格[5,0]等都引用相同的列表 - 是有没有办法避免这种情况,而不使用全局变量,深层复制或大幅修改网格的创建方式?任何帮助将不胜感激。
答案 0 :(得分:3)
最简单的方法是在添加列表时复制列表:
grid = []
for i in range(height):
if i % 2 == 0:
grid.append(line[:])
else:
board.append(linerev[:])