python初始化二维数组

python初始化list可以使用arr = [0] * 10
得到[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
二维数组如果参考list初始化方法使用mat = [[]] * 10
虽然可以得到[[], [], [], [], [], [], [], [], [], []]
但是当修改mat中任意行时,其他行会同时改变

1
2
mat[0].append(0)
# 此时 mat = [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]

可知采用mat = [[]] * 10初始化的二维数组,每一行指向的是同一个对象
可采用以下方法初始化:

1
mat = [[] for i in range(10)]