python中數組與多維陣列用法介紹

來源:互聯網
上載者:User

 增加時a.append( 'a ')就可以了。只要按順序加,就沒有問題   。
使用時,完全可以使用下標:

 代碼如下 複製代碼
a[0]
a[1]

但出果引用不存在的下標,則會引發異常。這時,你需要先添加元素,再引用就沒有問題   了。如果想預先保留空間,可以使用迴圈來給list,每個元素一個預設值,再引用就不會有問題   了。
如:

 代碼如下 複製代碼
a=[]
for   i   in   range(100):
        a.append([])
        for   j   in   range(100):
                a[i].append(0)

這樣就產生了一個100*100預設值為0的數組。


#建立一個寬度為3,高度為4的數組
#[[0,0,0],
# [0,0,0],
# [0,0,0],
# [0,0,0]]
myList = [[0] * 3] * 4但是當操作myList[0][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的淺拷貝的串連

例:

 代碼如下 複製代碼
>>> lists = [[]] * 3
>>> lists
[[], [], []]
>>> lists[0].append(3)
>>> lists
[[3], [3], [3]][[]]

是一個含有一個空列表元素的列表,所以[[]]*3表示3個指向這個空列表元素的引用,修改任何

一個元素都會改變整個列表:

所以需要用另外一種方式進行建立多維陣列,以免淺拷貝:

 代碼如下 複製代碼
>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists

[[3], [5], [7]]之前的二維數組建立方式為:

myList = [([0] * 3) for i in range(4)]

比如,   要動態建立一個   二維數組:

 代碼如下 複製代碼

int**   pTwoDimArr   =   new   int[10][20];
pTwoDimArr[0][0]   =   5;

這樣好像很直觀,不過,編譯會出錯:

 代碼如下 複製代碼

cannot   convert   from   'int   (*)[20] '   to   'int   **   '


如果這樣:

 代碼如下 複製代碼
int   pTwoDimArr[10][20];
pTwoDimArr[0][0]   =   5;

是可以的,但是   這個數組的記憶體卻是在棧上分配的,所以,  

 代碼如下 複製代碼
void   main(){
int   pTwoDimArr[1000][1000];
}

編譯沒問題,運行就會死掉

作為全域變數是可以的,但最好杜絕吧

 代碼如下 複製代碼
int   pTwoDimArr[1000][1000];
void   main(){
}


這樣:

 代碼如下 複製代碼
int   (*pTwoDimArr)[1000]   =   new   int[1000][1000];
pTwoDimArr[0][0]   =   5;

動態分配是可以的,   一來記得釋放記憶體,二來維數還是要固定的(第一維可變),是不是有些不爽

因為   C++   是“靜態”語言,   在編譯期要確定好一切,所以在多維陣列的定義時除了第一維可變外,其他幾維都要固定為常數,因為數組在記憶體中是線性儲存的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.