# Python 資料型別 - 陣列

Jinku Hu 2023年1月30日

``````from array import *
``````

## 陣列定義

``````arrayName = array(typecode, [initializers])
``````

``````a = array("i", [1, 2, 3, 4])
``````

``````>>> a=array('i', [1,2,3.4,4])
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
a=array('i', [1,2,3.4,4])
TypeError: integer argument expected, got float
``````

``````>>> from array import *
>>> a = array('i', [1,2,3,4])
>>> for i in a:
print(i)
1
2
3
4
``````

### `typecode` 引數

`b` 1 個位元組的有符號整數
`B` 1 個位元組的無符號整數
`u` 2 個位元組的 `unicode` 字元
`h` 2 個位元組的有符號整數
`H` 2 個位元組的無符號整數
`i` 2 個位元組的有符號整數
`I` 2 個位元組的無符號整數
`l` 4 個位元組的有符號整數
`L` 4 個位元組的無符號整數
`f` 4 個位元組的浮點數
`d` 8 個位元組的浮點數

## 陣列索引

### 使用索引運算子 `[]` 檢索陣列的元素

``````>>> a = array('i', [1,2,3,4])
>>> print("First element of array =", a[0])
First element of array = 1
>>> print("Second element of array =", a[1])
Second element of array = 2
``````

### 使用 `index(x)` 方法獲取給定值的索引

`index(x)` 方法返回首次出現 `x` 的最小索引。

``````>>> a = array('i', [1,2,3,4])
>>> print("1 is found at location:", a.index(1))
1 is found at location: 0
>>> print("4 is found at location:", a.index(4))
4 is found at location: 3
``````

## 負索引

``````>>> a = array('i', [1,2,3,4])
>>> print("last element of array:",a[-1])
last element of array: 4
``````

## 遍歷陣列

### 陣列 `len()` 方法

`len()` 方法返回陣列中的元素數。

``````>>> a = array('i', [1,2,3,4])
>>> print("length of a:", len(a))
length of a: 4
``````

### 遍歷陣列

``````>>> a = array('i', [1,2,3,4])
>>> for i in range(len(a)):
print(a[i])
1
2
3
4
``````

``````>>> a = array('i', [1,2,3,4])
>>> for i in a:
print(i)
1
2
3
4
``````

## 更新陣列

### `append()`

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.append(10)
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10])
``````

### `insert(i, x)`

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.insert(3,44)
>>> print(a)
array('i', [1, 2, 3, 44, 4, 5, 7, 8, 9])
``````

### `extend(x)`

`append(x)``x` 元素作為一項新增到陣列。`extend(x)` 方法是通過在給定物件中附加所有 `x` 中的元素來擴充套件陣列的方法。

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.extend([10,11,12,13,14,15])
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15])
``````

### `fromlist()`

`fromlist()` 將列表中的元素新增到陣列中。

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> l = [10,11]
>>> a.fromlist(l)
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11])
``````

## 修改陣列的不同方法

### `reverse()`

`reverse()` 反轉陣列。

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.reverse()
>>> print(a)
array('i', [9, 8, 7, 5, 4, 3, 2, 1])
``````

### `+` 運算子

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> b = array('i', [10,11])
>>> print(a + b)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 10, 11])
``````

### `*` 運算子

`*` 運算子將陣列中的元素重複特定的次數。

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a = a * 2
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8, 9, 1, 2, 3, 4, 5, 7, 8, 9])
``````

## 從陣列中刪除元素

`del` 語句從陣列中刪除一個或多個元素。你還可以使用 `del` 刪除整個陣列：

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> del a[3]
>>> print(a)
array('i', [1, 2, 3, 5, 7, 8, 9])
>>> del a           #entire array is deleted
``````

### `remove(x)`

`remove()` 從陣列中刪除第一次出現的 `x`

``````>>> a = array('i', [1,2,3,4,5,7,8,9,3])
>>> a.remove(3)
>>> print(a)
array('i', [1, 2, 4, 5, 7, 8, 9, 3])
``````

### `pop()`

`pop()` 將刪除並返回陣列中的最後一個元素。

``````>>> a = array('i', [1,2,3,4,5,7,8,9])
>>> a.pop()
9
>>> print(a)
array('i', [1, 2, 3, 4, 5, 7, 8])
``````

## 陣列方法

`append()` 在陣列末尾新增一個元素
`extend()` 向陣列新增多個元素。將給定陣列的所有元素新增到另一個陣列
`insert()` 在所需位置新增元素
`remove()` 從陣列中刪除特定元素
`pop()` 從給定位置刪除元素並返回該元素
`clear()` 從陣列中刪除所有元素
`index()` 返回陣列中第一個匹配元素的索引
`count()` 返回匹配的元素總數
`sort()` 以升序對陣列的元素進行排序
`reverse()` 反轉陣列元素的順序
`copy()` 返回一個陣列的拷貝

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景，但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。