使用python更改嵌套列表中的值

时间:2011-10-02 03:41:07

标签: python list

好的,以前使用相同的程序,我现在遇到了一个我应该预料到的问题;网格(可变宽度和高度)是基于代码来构造的,以交替创建列表的符号,然后这些列表作为嵌套列表存储在网格中。下面是一段代码,用于使列表(称为行)的奇数宽度是必要的。

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]等都引用相同的列表 - 是有没有办法避免这种情况,而不使用全局变量,深层复制或大幅修改网格的创建方式?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

最简单的方法是在添加列表时复制列表:

grid = []
for i in range(height):
    if i % 2 == 0:
        grid.append(line[:])
    else:
        board.append(linerev[:])