Python數(shù)組初始化陷阱

比較以下兩種數(shù)組初始化:

arr1 = [[0]*5]*5
arr2 = [[0 for i in range(5)] for j in range(5)]

乍看都是初始化一個5*5的二維數(shù)組,但若都執(zhí)行相同的賦值語句后,結(jié)果卻大不一樣:

arr1[0][0] = 1 # arr1會變?yōu)閇[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]]
arr2[0][0] = 1 # arr2會變?yōu)閇[1,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]

下圖解釋了arr1的初始化和賦值的邏輯


arr1初始化
arr1賦值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容