Python之位址引用的問題

2021-09-27 02:02:48 字數 733 閱讀 8214

python是一門典型的動態語言,很多資料的型別實際在執行時才確定。也就是為什麼不必事先指定資料型別的原因。這樣的特性使得很多問題在執行時才會暴露出來。一向追求簡潔的語法,於是今天在寫某公司的演算法題時,用到了這種方法初始化矩陣:

data= [[[0]*3]*5]*6
驗證下這個列表是怎樣的呢?如下

然後當你修改的時候,就矇圈了

data[2][3][2]=9
結果如下:

實際上對於二維陣列,[0]*3這個陣列的位址被複製了5*6份,也就是為什麼所有[0]*3該列表中的值都被修改了。

正確初始化方式:

其實也不僅僅是python是有這樣的問題,c++在使用指標的時候,操作不當也會出現因為位址指向同乙個位置,導致修改到了不該修改的資料。

多維順序儲存陣列之位址求解問題

近期資料結構課講到多維陣列及矩陣,說到資料儲存在計算機中實際儲存順序的時候就暈了,概念自己倒是知道,但是自己算的時候就迷迷糊糊。身邊也有同學和我抱怨說老師上課進度太快了,認為雖然c裡面提過但上課還是需要再解釋。想了想就寫了這篇文章,也算是幫同學也幫自己大概理一下思路。本文將就多維陣列的概念 c語言中...

位址,引用,傳位址,傳引用的分析

一,基本理論原理和理解 1,傳值,是把實參的值賦值給行參 那麼對行參的修改,不會影響實參的值 傳位址 是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如int 那麼傳位址以後,實參和行參都指向同乙個物件 傳引用 真正的以位址的方式傳遞引數 傳遞以後,行參和實參都是同乙個物件,只是他們名字不同而已...

位址問題python網路程式設計位址問題

本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正 socket.getservbyname servicename protocolname integer 詢查某個議協對應的口端號,須要用使兩個引數,servicename對應口端名稱,如 http,smtp,等。protoc...