Python二維陣列的建立
阿新 • • 發佈:2019-02-18
如果在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)]
當然,如果你喜歡動一動手指就讓整個矩陣發生翻天覆地變化的快感的話,當我沒說~