array --- 数值数据数组

该模块定义了 array.array 类型:一种节省空间的序列,存放单一固定数值类型的值,可像 list 一样索引,但底层由一块连续内存支持,可通过缓冲区协议访问。

支持的类型码

单字符 typecode 参数用于选择元素类型:

类型码

C 类型

字节数

Python 类型

'b'

signed char

1

int

'B'

unsigned char

1

int

'h'

signed short

2

int

'H'

unsigned short

2

int

'i'

signed int

2 或 4

int

'I'

unsigned int

2 或 4

int

'l'

signed long

4

int

'L'

unsigned long

4

int

'q'

signed long long

8

int

'Q'

unsigned long long

8

int

'f'

float

4

float

'd'

double

8

float

'f''d' 类型码要求固件构建时启用了浮点支持(在大多数开发板上为默认配置)。'i''I' 的确切宽度遵循宿主 C ABI --- 在 Cortex-M 端口上通常为 4 字节。

class array.array(typecode: str, iterable: Iterable = ())

创建一个元素为给定类型的数组。数组的初始内容由 iterable 给出。如果未提供,则创建一个空数组。

除下列方法外,array 对象还实现了缓冲区协议。这意味着可通过 memoryview 或其他使用此协议的接口,以原始字节形式访问整个数组的内容。

append(val: Any) None

将新元素 val 追加到数组末尾,使其增长。

extend(iterable: Iterable) None

iterable 中包含的新元素追加到数组末尾,使其增长。

__getitem__(index: int | slice) Any

对数组进行索引读取,以 a[index] 的形式调用(其中 a 是一个 array)。如果 indexint 则返回一个值,如果 index 是切片则返回一个 array。负索引从末尾开始计数,如果索引超出范围则引发 IndexError

注意: __getitem__ 不能直接调用(a.__getitem__(index) 会失败),并且不存在于 __dict__ 中,但 a[index] 确实有效。

__setitem__(index: int | slice, value: Any) None

对数组进行索引写入,以 a[index] = value 的形式调用(其中 a 是一个 array)。如果 indexintvalue 是单个值,如果 index 是切片则为一个 array。负索引从末尾开始计数,如果索引超出范围则引发 IndexError

注意: __setitem__ 不能直接调用(a.__setitem__(index, value) 会失败),并且不存在于 __dict__ 中,但 a[index] = value 确实有效。

__len__() int

返回数组中的项目数,以 len(a) 的形式调用(其中 a 是一个 array)。

注意: __len__ 不能直接调用(a.__len__() 会失败),并且该方法不存在于 __dict__ 中,但 len(a) 确实有效。

__add__(other: array) array

返回一个新的 array,它是该数组与 other 的串联,以 a + other 的形式调用(其中 aother 都是 arrays)。

注意: __add__ 不能直接调用(a.__add__(other) 会失败),并且不存在于 __dict__ 中,但 a + other 确实有效。

__iadd__(other: array) array

就地将该数组与 other 串联,以 a += other 的形式调用(其中 aother 都是 arrays)。等价于 extend(other)

注意: __iadd__ 不能直接调用(a.__iadd__(other) 会失败),并且不存在于 __dict__ 中,但 a += other 确实有效。

__repr__() str

返回数组的字符串表示,以 str(a)repr(a) 的形式调用(其中 a 是一个 array)。返回字符串 "array(<type>, [<elements>])",其中 <type> 是该数组的类型码字母,<elements> 是数组元素的逗号分隔列表。

注意: __repr__ 不能直接调用(a.__repr__() 会失败),并且不存在于 __dict__ 中,但 str(a)repr(a) 都有效。