因爲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)