Python二維陣列的建立

2021-07-16 17:58:41 字數 1316 閱讀 6214

如果在python中想要建立乙個二維陣列,我們該如何寫呢?

>>> a = [0]* 3 * 4

>>> b = [[0]*3] * 4

是a還是b呢?當然是b了!還是先輸出看一下:

>>> a

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

>>> b

[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

不出所料,我們應該按照b = [[0]*3]*4來建立二維陣列。

!!!!!!!!but!!!!!!!!!

當你按照上述方式來建立二維陣列的時候,如果你對二維陣列中的乙個數進行改變,會輸出什麼呢?我們來試一下,比如我們把第一行的第二個數字改為2,b[0][1] = 2,輸出:

為什麼會是這樣?!!

因為list在python中是個可變型別啊親!按照b = [[0]*3]*4來建立二維陣列只是4個指向這個空列表元素的引用,修改任何乙個元素都會改變整個列表的。

另乙個栗子:

>>> a = [0]*3

>>> b = a

>>> b[0] = 1

>>> a

[1, 0, 0]

坑爹啊!!

所以,在python中建立二維陣列應該這樣寫:

>>> c = [[0]*3 for i in range(4)]

>>> c

[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

>>> c[0][1] = 2

>>> c

[[0, 2, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

所以下次在python中建立二維陣列時候記住了:

alist = [[0] * cols for i in

range(rows)]

當然,如果你喜歡動一動手指就讓整個矩陣發生翻天覆地變化的快感的話,當我沒說~

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建立二維陣列

因一次筆試中忘記如何用python建立二維陣列,遂記錄下來.成功沒有捷徑,一定要腳踏實地.沒有使用numpy模組,若想使用numpy模組建立二維陣列請移步。一 初始化乙個元素從0 n m的二維陣列 row int input column int input dp i column j for j ...

python二維陣列的建立

有兩種方法成功建立二維列表 matrix 0,0,0 0,0,0 0,0,0 簡單直接,但是陣列過大會被累死的 matrix 0for i in range 2 for i in range 24 建立乙個2 24的二維列表,是不是簡單很多啊 array 0 0 matrix array 3 pri...