[問題] List of List初始化

作者: fishlinghu (令狐瑜)   2016-11-22 14:18:30
剛剛打了一段程式碼如下
想要initialize一個3D的list
temp = [[[True, True, True]]*3]*5
結果發現
改裡面任一個element
其他對應位置的element也會一起改
例如我用temp[0][0][2] = False
則temp[m][n][2]會全部變成False
想請問為何會這樣呢?
希望各位高手可以從觀念來解釋
那正確的initialization方式應該是怎樣呢?
非常感謝各位的幫忙與解答
作者: Conjuror (阿糾)   2016-11-22 14:35:00
因為事實上你的 3D 陣列都指向同一個記憶體位置temp[m][n][x] 的 x 不管是多少都是指同一個位置temp[m][n][0].__sizeof__所以建置的時候需要獨立建立,我會這麼寫

Links booklink

Contact Us: admin [ a t ] ucptt.com