矩阵值被覆盖- Python



我正在用Python写一个程序。我有一个使用列表的二维矩阵实现,我在所有函数的范围之外声明了列表。其思想是将从后续函数调用中计算的值存储在矩阵中。我的代码是这样的:

database=[[0 for i in range(2)] for j in range(2)] #2-D matrix
def func(data,x,y):
   #manipulate the list data and then store it in database[x][y]
   data[1]+=1
   database[x][y]=data
   print("database[0][0]={}, database[1][1]={}".format(database[0][0], database[1][1]))
   del data[:]
def main():
   data=['one',1]
   func(data,0,0)
   data=['two',2]
   func(data,1,1)
if __name__=="__main__":main()

最后,我得到数据库[0][0]作为不同的东西。我想知道为什么索引[0][0]没有[' 1 ',2]!任何帮助都会很感激。谢谢!

func中,当您执行del data[:]时,您删除了本地参数data指向的对象。因此,即使你在数据库中存储了对它的引用,它也消失了。

  • 删除delete语句,本地变量将被丢弃,不需要这个
  • 使用database[x][y]=list(data)代替将数据复制为新对象

相关内容

  • 没有找到相关文章

最新更新