当你用如下方法创建一个python二维数组时
memo = [[1] * 3] * 4
于是你得到
memo = [ [1, 1 ,1],
[1, 1 ,1],
[1, 1 ,1],
[1, 1 ,1]
> 这里是引用
]
当你修改memo当个元素时
memo[2,1] = 0
你会发现memo整列数字都变换了
memo = [[1,0,1,1],
[1,0,1,1],
[1,0,1,1],
[1,0,1,1]
]
有一篇文章说
这是因为 [[0]*5]*5 表示的是指向 [0]*5 这个列表的引用,所以当你修改某一个值时,整个列表都会被改变
https://blog.csdn.net/zzc15806/article/details/82629406
大概意思是指这样子初始化的二维数组的引用不同,需要修改二维数组初始化,可以用**print(id())**来验证他们的引用地址
解决方法:列表生成法
test = [[0] * n for _ in range(m)]
详细地址:https://blog.csdn.net/qq_1290259791/article/details/81009164