Python - 对单个元素的更新会影响同一列中的所有元素[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 对单个元素的更新会影响同一列中的所有元素[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我正在尝试创建一个connect 4类,但每当我删除一个字母/标记时,它都会更新整个列。我无法弄清楚为什么会发生这种情况:

class ConnectFour():
def __init__(self, width, height):
    self.width = width
    self.height = height        
    self.board = [[0] * width] * height

def dropLetter(self, letter, col):
    count = self.height - 1
    while count > 0 and self.board[count][col] != 0:
        count -= 1
    print self.board[count][col] 
    self.board[count][col] = letter     
    print self.board

C = ConnectFour(4,4)
C.dropLetter('X', 0)

然后当我打印self.board时,提供的列中的每个插槽都在更新。为什么会这样?

答案

问题在这里:

self.board = [[0] * width] * height

当你这样做时,self.board包含height引用同一行[0]*width。现在您需要将其更改为

self.board = [[0]*width for _ in range(height)]

以上是关于Python - 对单个元素的更新会影响同一列中的所有元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何迭代单个GridView列中的所有条目?

如何在单个查询 (PSQL) 中更新一列中的不同值?

根据行和列对矩阵中的所有元素进行排名

使用同一表中另一列的数据计数更新一列? [关闭]

Python:在一列中为另一列中的单个值显示多个值

在单个波段中具有多行时,数据溢出会拉伸一行