1. 程式人生 > >Python二維陣列的建立

Python二維陣列的建立

如果在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

,輸出:

>>> B
[[0, 2, 0], [0, 2, 0], [0, 2, 0], [0, 2, 0]]

問號臉
為什麼會是這樣?!!
因為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)]

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