python的多維陣列操作

2021-09-03 02:26:42 字數 982 閱讀 5620

#建立乙個寬度為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],

[0,1,0],

[0,1,0],

[0,1,0]]

後來在the python standard library 裡面找到答案

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...