因为python中没有数组,所以一般用列表来实现二维数组。
都知道Python中有深拷贝和浅拷贝的问题,所以在初始化二位数组的时候可能不小心就会遇到这样的问题,比如:
arr = [[0] * 3] * 4
或者
a = [[]]*4
这样的问题在于其实*4只是复制了n个[0,0,0]或者[]的引用,改任何一个数组都会让另外3个发生改变。
那么正确的初始化方法:(避免发生浅拷贝)
(1)直接创建
arr = [[0,0,0],
[0,0,0],
[0,0,0],
]
(2)列表生成器创建
arr = [([0] * 4) for i in range(5)] #初始化为0
(3)numpy创建
import numpy as np
arr = np.zeros((3, 4), dtype=np.int)