Python 資料型別 - 陣列

Jinku Hu 2023年1月30日
  1. 陣列定義
  2. 陣列索引
  3. 負索引
  4. 遍歷陣列
  5. 更新陣列
  6. 修改陣列的不同方法
  7. 從陣列中刪除元素
  8. 陣列方法
Python 資料型別 - 陣列

在本節中,你將學習如何在 Python 中建立和訪問陣列的元素。

陣列是相同資料型別的元素的集合。陣列和列表之間的主要區別是列表可以具有不同資料型別的元素。

在 Python 程式設計中,要建立陣列,你需要匯入 array 模組,因為陣列不是基本資料型別。

from array import *

陣列定義

要宣告陣列,你必須遵循以下語法:

arrayName = array(typecode, [initializers])

在這裡,arrayName 是陣列的名稱,typecode 確定陣列的資料型別,initializers 是陣列中的值。

你將在本節稍後部分了解有關 typecode 引數的更多資訊。

我們來看下面的例子:

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

陣列的名稱是 atypecodei,它指定陣列的值將是整數資料型別的。如果嘗試在該陣列中儲存除整數以外的值,將引發錯誤:

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

負索引

類似於其他 Python 序列資料型別,如字串 strings、列表 lists元組 tuplesrange 物件等,你也可以使用負索引來訪問陣列中的元素。

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

遍歷陣列

你可以使用 for 迴圈來遍歷陣列的元素。

>>> 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()

你可以使用陣列 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)

你可以使用 insert(i, x) 方法將元素 x 插入給定索引 i

>>> 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])

警告

如果 x 是另一個陣列,則它應具有完全相同的資料型別程式碼,否則將引發 TypeError。如果 x 不是 Python 陣列,則它必須是可迭代的,並且其元素必須與要擴充套件的陣列具有相同的資料型別。

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() 返回一個陣列的拷貝
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

LinkedIn Facebook