Python 二維陣列

2021-06-08 16:42:13 字數 1028 閱讀 8888

python陣列的應用中在實際程式設計中是乙個非常重要的應用技術,作為python程式設計人員來說,必須要熟練的掌握這方面的所有應用技巧。那麼,接下來,我們將會通過對python二維陣列的理解來為大家解讀這方面的知識。

python中沒有陣列的資料結構,但列表很像陣列,如:

a

=[0,1,2] 

這時a[0]=0, a[1]=1, a[[2]=2,但引出乙個問題,即如果陣列a想定義為0到999怎麼辦,這時可能通過a = range(0, 1000)實現。或省略為a = range(1000).如果想定義1000長度的a,初始值全為0,則

a

= [0 for x in range(0, 1000)] 

下面是python二維陣列的定義:

直接定義 a=[[1,1],[1,1]],這裡定義了乙個2*2的,且初始為0的二維陣列。

間接定義 a=[[0 for x in range(10)] for y in range(10)],這裡定義了10*10初始為0的二維陣列。

後來,我在網上找到了更簡單的字義二維陣列的方法:

b = [[0]*10]*10,定義10*10初始為0的python二維陣列。

與a=[[0 for x in range(10)] for y in range(10)]比較:print a==b的結果為true。

但用b的定義方法代替a後,以前的可以正常執行的程式也出錯了,經過仔細分析得出區別:

a[0][0]=1時,只有a[0][0]為1,其他全為0。

b[0][0]=1時,a[0][0],a[1][0],只到a[9,0]全部為1

。由此得到大陣列中的10個小的一維資料全是乙個相同的引用,即指向同一位址。故b = [[0]*10]*10並不符合我們常規意義上的二維陣列。

同時經過試驗:c=[0]*10的定義與c=[0 for x in range(10)]有同樣的效果,而沒有上面相同引用的問題,估計陣列c的定義時是值型別相乘,而前面b的用型別的相乘,因為一維陣列是乙個引用(借用c#中的值型別和引用型別,不知是否合適)。

python二維陣列

今天。好多不會的,慢慢補充 1 python的二維陣列初始化 s 0 for i in range 3 for i in range 3 這樣就初始了乙個3 3的二維陣列 0 for in range col numbers for i in range rows numbers 2 with op...

Python二維陣列建立

建立方法 1.直接建立 2.列表生成 3.numpy建立 遇到的問題 a 3 print a 輸出為 1,2,3 1,2,3 1,2,3 原因是建立乙個列表,然後複製上個,相當於二維陣列中,引用的是同乙個一位陣列。意思就是 a b 3只是建立了3個指向b的應用,所以一旦b改變,a中的3個列表 也會改...

python二維陣列操作

n 3m 3dp 0 n mdp 0 1 1print dp output 0,1,0 0,1,0 0,1,0 上面這段 是想修改二維陣列第1行第2列的數,可是居然三列都改了 看了woshare的部落格後,豁然開朗了 matrix array 3 也就是說matrix array 3操作中,只是建立...