首页 > 解决方案 > 将值设置到另一个列表(a)中的列表(b)中的一个位置,将该值设置在列表(a)中的所有列表中的相同位置

问题描述

我试图使用嵌套列表创建一个 9x9 数组,当我设置时试图设置一个值,出于某种原因,它会在该数组的每一行中设置该值。它以这样的列表开头

[[0,0,0,0,0],
 [0,0,0,0,0],
 [0,0,0,0,0],
 [0,0,0,0,0],
 [0,0,0,0,0]]

我做了类似 list[2][3]=1 的事情,列表更改为

[[0,0,0,1,0],
 [0,0,0,1,0],
 [0,0,0,1,0],
 [0,0,0,1,0],
 [0,0,0,1,0]]

我不知道我做错了什么。我的代码是

def resetGrids():
    gridHidden=[]
    gridShown=[]
    gridpart=[]
    for i in range(9):
        gridpart.append(0)
    for i in range(9):
        gridHidden.append(gridpart)
        gridShown.append(gridpart)
    for i in range(10):
        searching=True
        while searching:
            checkX=random.randint(0,8)
            checkY=random.randint(0,8)
            print(checkX, checkY)
            if gridHidden[checkY][checkX]!=10:
                print(gridHidden[checkY][checkX])
                gridHidden[checkY][checkX]=10
                print("a")
                #for a in range(-1,2):
                #    if checkY+a>=0 and checkY+a<=8:
                #        for b in range(-1,2):
                #            if checkX+b>=0 and checkX+b<=8:
                #                if gridHidden[checkY+a][checkX+b]!=10:
                #                    gridHidden[checkY+a][checkX+b]+=1
                searching=False
                print("B")
            print(gridHidden)
        print("c")
    print("d")

标签: pythonpython-3.xlist

解决方案


尝试设置为copy()实际列表的内部列表,我猜这是因为您实际上传递了对列表的引用。替换为以下行:

gridHidden.append(gridpart.copy())
gridShown.append(gridpart.copy())

当我尝试这个时,并添加了这部分:

print(gridHidden)
gridHidden[1][2] = 3
print(gridHidden)

我懂了:

[[0, 10, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 10, 0, 0, 10, 10, 0, 0, 10], [0, 0, 0, 0, 0, 0, 0, 10, 0], [0, 0, 0, 10, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 10, 0, 0, 0], [0, 0, 0, 0, 10, 0, 0, 0, 0], [0, 10, 0, 0, 0, 0, 0, 0, 0]]
[[0, 10, 0, 0, 0, 0, 0, 0, 0], [0, 0, 3, 0, 0, 0, 0, 0, 0], [0, 10, 0, 0, 10, 10, 0, 0, 10], [0, 0, 0, 0, 0, 0, 0, 10, 0], [0, 0, 0, 10, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 10, 0, 0, 0], [0, 0, 0, 0, 10, 0, 0, 0, 0], [0, 10, 0, 0, 0, 0, 0, 0, 0]]

推荐阅读