array概述
雖然python列表既靈活又簡單,但是面對各類需求時,我們可能有更好的選擇。比如,要存放1000萬個浮點數的話,數組(array)的效率要高得多,因為數組在背后存的並不是float對象,而是數字的機器翻譯,也就是字節表述。如果我們需要一個只包含數字的列表,那么array.array比list更高效。數組支持所有跟可變序列有關的操作,包括.pop、.insert、和.extend。另外,數組還提供從文件讀取和存入文件的方法,如.frombytes和.tofile。
array的創建方式
arr_name = array.array(typecode[, initializer])
在創建python array時,需要指定一個類型碼,這個類型碼用來表示底層的C語言應該存放怎樣的數據類型。比如b類型表示有符號的字符(signed char),因此array('b')創建出的數組就只能存放一個字節大小的整數,范圍從-128到127。
操作演示
創建array
from array import array
arr = array('i', [10, 20, 30, 40, 50])
for x in arr:
print(x)
輸出:
10
20
30
40
50
上面代碼創建了一個大小為2個字節的帶符號整數數組,並將其輸出。
其他類型碼
Type code | C Type | Python Type | Minimum size in bytes |
---|---|---|---|
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'h' | signed short | int | 2 |
'H' | unsigned short | int | 2 |
'i' | signed int | int | 2 |
'I' | unsigned int | int | 2 |
'l'(lower L) | signed long | int | 4 |
'L' | unsigned long | int | 4 |
'q' | signed long long | int | 8 |
'Q' | unsigned long long | int | 8 |
'f' | float | float | 4 |
'd' | double | float | 8 |
訪問數組
from array import array
arr = array('i', [10, 20, 30, 40, 50])
print(arr[0])
print(arr[1])
輸出:
10
20
插入操作
from array import array
arr = array('i', [10, 20, 30, 40, 50])
arr.insert(1, 60)
for x in arr:
print(x)
輸出:
10
60
20
30
40
50
刪除元素
from array import array
arr = array('i', [10, 20, 30, 40, 50])
arr.remove(40)
for x in arr:
print(x)
輸出:
10
20
30
50
查找元素的索引
from array import array
arr = array('i', [10, 20, 30, 40, 50])
print(arr.index(40))
輸出:
3
參考
- 《流暢的Python》,Luciano Ramalho著,安道 吳珂譯
- Python教程:數組(Array)概念-菜鳥學苑