Python正確的初始化一個二維數組,避開淺拷貝問題

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章