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)概念-菜鸟学苑