python的二维数组的赋值问题
如果我们想创建一个数值全为0的二维数组,一般用列表创建的话,我们一般会写arr=[[0]*5]*5,这样就可以得到一个全0的二维数组。
但是这个数组在赋值的时候就会出现错误,假设我们对其中的某一个元素的值进行修改,可能得到的结果与我们预想的有差别。
这是因为我们首先用的[0]*5会生成一个列表,而[[0]*5]*5得到的是[0]*5这个列表这个对象的引用。
也就是说这个二维数组里面的数组其实都是指向同一个对象,所以对里面单独一个元素进行修改时,里面每个列表的对应位置的都会修改。
所以一般在我们需要这种二维数组的时候,我们一般使用[[0]*5 for _ in range(5)]来创建。(numpy的zero可以直接创建)