Python 資料結構與演算法 建立二維(多維)陣列

2021-10-02 21:15:23 字數 1202 閱讀 7380

先看一段**

#嘗試建立乙個2*2陣列

>>

> matrix=[[

0,0]

*2]>>

> matrix[[

0,0,

0,0]

]#這段**實際上並未建立乙個2維陣列

>>

> matrix=[[

0,0]

]*2>>

> matrix[[

0,0]

,[0,

0]]#這似乎建立了乙個二維陣列

但如果對其進行測試:

>>

> matrix[0]

[0]=

1>>

> matrix[[

1,0]

,[1,

0]]

會發現上面的**中,兩個list都被修改了。

為什麼呢?

查詢python語言參考中的5.6. sequence types中得知,如上所述地嘗試建立二維陣列,實際上是建立了兩個同時指向[0,0]的引用,即這是乙個淺複製。

正確的做法:使用列表推導式

>>

> matrix=[[

0,0]

for i in

range(2

)]>>

> matrix[[

0,0]

,[0,

0]]#建立乙個3維陣列

>>

> matrix1=[[

0for i in

range(3

)]for i in

range(3

)]>>

> matrix1[[

0,0,

0],[

0,0,

0],[

0,0,

0]]

如果測試一下:

>>

> matrix[0]

[1]=

1>>

> matrix[1]

[0]=

1>>

> matrix[[

0,1]

,[1,

0]]

python資料結構與演算法

coding utf 8 import sys 使用以下語句將引數的str格式轉換為int格式 l list map int sys.argv 1 split target int sys.argv 2 def binarysearch print l print target left 0 rig...

資料結構與演算法 python

元類 基礎 冒泡 它重複地走訪要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端,故名氣泡排序。def bubble sort alist ...

python演算法與資料結構

若n1 n2 n3 1000,且n1平方 n2平方 n3平方 n1,n2,n3為自然數 求出所有n1 n2 n3可能的組合?n1 0 n2 0 n3 0 判斷n1 n2 n3是否等於1000,之後變n3 1,n3 2,n3 3,然後再變n2 那如果變為 n1 n2 n3 2000 了呢?思路1 實現...