#建立乙個寬度為3,高度為4的陣列
#[[0,0,0],
# [0,0,0],
# [0,0,0],
# [0,0,0]]
mylist = [[0] * 3] * 4
但是操作mylist[0][1] = 1的時候
發現整個第二列都被賦值為1
[[0,1,0],後來在the python standard library 裡面找到答案[0,1,0],
[0,1,0],
[0,1,0]]
list * n—>n shallow copies of list concatenated, n個list的淺拷貝的連線:
list * n => list, list乘以n以後還是乙個 list, 只是對原list裡面的 元素 是淺拷貝了n份。[ [0] ] * 3, 裡面的元素是 [0], 這是乙個list,所以會存在淺拷貝之後指向同乙個list的問題。
>>> lists = * 3
>>> lists
[, , ]
>>> lists
[[3], [3], [3]]
是乙個含有空列表的列表,所以 * 3表示三個對的引用,修改任意乙個,全體都會變
所以要用另乙個方式建立多維陣列,以免引起淺拷貝
>>>list1 = [ for i in range(3)]
>>>list1
[, , ]
[[3], [3], [3]]
這樣的話就可以避免淺拷貝的問題
同時,當lists = [[0] * 3] * 4時建立多維陣列, [0] * 3 , 裡面的元素是 0, 是乙個 int ,不可變物件,淺拷貝沒問題
Python操作多維陣列和矩陣
首先來看乙個簡單的二維 投擲兩枚骰子時,有36種可能的結果。我們可以將其製成乙個二維 行和列分別代表一枚骰子的得數 1 2 3 4 5 6 1 2 3 4 5 6 7 2 3 4 5 6 7 8 3 4 5 6 7 8 9 4 5 6 7 8 9 10 5 6 7 8 9 10 11 6 7 8 9...
python 多維陣列的排序
這幾天寫php程式,發現php裡有乙個array multisort 函式十分好用,可以輕鬆對多維陣列進行排序,查了查python的相關資料,視乎沒有乙個比較直接的函式來完成多維陣列的排序 單個陣列的排序很簡單,直接用sort就能完成,如一下ipython in 39 array 4,2,5,1,3...
《python》 陣列和多維陣列的產生
定義以及初始化 a 1,2,3 a 1,2,3 初始化一維陣列 0 for x in range 10 0,0,0,0,0,0,0,0,0,0 a 1,1 2,2 a 1,1 2,2 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 mylist 0 1 1 mylist 0...