array ---有效的数值数组


这个模块定义了一个对象类型,它可以紧凑地表示一个基本值数组:字符、整数、浮点数。数组是序列类型,其行为与列表非常相似,只是存储在其中的对象类型受到约束。类型在对象创建时通过使用 type code ,它是单个字符。定义了以下类型代码:

类型码

C类型

Python类型

最小字节大小

笔记

'b'

符号字符

int

1

'B'

无符号字符

int

1

'u'

wchar_t

Unicode字符

2

(1)

'h'

符号短

int

2

'H'

无符号短整型

int

2

'i'

有符号整型

int

2

'I'

无符号整型

int

2

'l'

符号长

int

4

'L'

无符号长

int

4

'q'

有符号长整型

int

8

'Q'

无符号长整型

int

8

'f'

浮动

浮动

4

'd'

双重的

浮动

8

笔记:

  1. 它可以是16位或32位,具体取决于平台。

    在 3.9 版更改: array('u') 现在使用 wchar_t 作为C类型而不是弃用 Py_UNICODE . 此更改不会影响其行为,因为 Py_UNICODE 是的别名 wchar_t 从Python 3.3开始。

    Deprecated since version 3.3, will be removed in version 4.0.

值的实际表示由机器体系结构决定(严格来说,由C实现决定)。实际大小可以通过 itemsize 属性。

模块定义以下类型:

class array.array(typecode[, initializer])

其项受限制的新数组 类型码 ,并从选项初始化 初始化器 值,必须是列表,a bytes-like object 或在适当类型的元素上可Itable。

如果给定一个列表或字符串,则将初始值设定项传递到新数组的 fromlist()frombytes()fromunicode() 方法(见下文)将初始项添加到数组中。否则,iterable初始值设定项将传递给 extend() 方法。

提出一个 auditing event array.__new__ 带着论据 typecodeinitializer .

array.typecodes

包含所有可用类型代码的字符串。

数组对象支持索引、切片、串联和乘法的普通序列操作。使用切片分配时,分配的值必须是具有相同类型代码的数组对象;在所有其他情况下, TypeError 提高了。数组对象还实现缓冲区接口,可以在任何位置使用 bytes-like objects 支持。

还支持以下数据项和方法:

array.typecode

用于创建数组的类型代码字符。

array.itemsize

内部表示形式中一个数组项的字节长度。

array.append(x)

附加值为的新项 x 到数组的末尾。

array.buffer_info()

返回元组 (address, length) 给出当前内存地址和用于保存数组内容的缓冲区元素的长度。内存缓冲区的大小(以字节为单位)可以计算为 array.buffer_info()[1] * array.itemsize . 这在处理需要内存地址的低级(和本质上不安全的)I/O接口(如某些 ioctl() 操作。只要数组存在且不应用长度更改操作,返回的数字就有效。

注解

当从C或C++编写的代码中使用数组对象(有效地利用这些信息的唯一方法)时,使用数组对象支持的缓冲区接口就更有意义了。这种方法是为了向后兼容而维护的,应该在新代码中避免使用。缓冲区接口记录在 缓冲协议 .

array.byteswap()

“byteswap”阵列的所有项目。仅支持大小为1、2、4或8字节的值;对于其他类型的值, RuntimeError 被引发。当从用不同字节顺序写入机器的文件中读取数据时,它很有用。

array.count(x)

返回出现的次数 x 在数组中。

array.extend(iterable)

附加来自的项 可迭代的 到数组的末尾。如果 可迭代的 是另一个数组,它必须 确切地 相同的类型代码;如果不是, TypeError 将被引发。如果 可迭代的 不是数组,它必须是可重复的,并且其元素必须是要附加到数组的正确类型。

array.frombytes(s)

附加字符串中的项,将字符串解释为一个机器值数组(就好像它是使用 fromfile() 方法)。

3.2 新版功能: fromstring() 已重命名为 frombytes() 为了清晰起见。

array.fromfile(f, n)

n 项目(作为机器值) file object f 并将它们附加到数组的末尾。如果小于 n 项目可用, EOFError 引发,但仍将可用的项插入到数组中。 f 必须是真正的内置文件对象;具有 read() 方法不行。

array.fromlist(list)

追加列表中的项目。这相当于 for x in list: a.append(x) 但如果存在类型错误,则数组不变。

array.fromunicode(s)

使用给定Unicode字符串中的数据扩展此数组。数组必须是类型 'u' 数组;否则为 ValueError 提高了。使用 array.frombytes(unicodestring.encode(enc)) 将Unicode数据附加到某个其他类型的数组。

array.index(x)

返回最小值 i 这样的话 i 是第一次出现的索引 x 在数组中。

array.insert(i, x)

插入具有值的新项目 x 在位置之前的数组中 i . 负值被视为相对于数组的结尾。

array.pop([i])

删除带有索引的项 i 并返回它。可选参数默认为 -1 ,以便默认情况下删除并返回最后一个项。

array.remove(x)

删除第一次出现的 x 从数组中。

array.reverse()

颠倒数组中各项的顺序。

array.tobytes()

将数组转换为机器值数组,并返回字节表示形式(与将由 tofile() 方法。)

3.2 新版功能: tostring() 已重命名为 tobytes() 为了清晰起见。

array.tofile(f)

将所有项(作为机器值)写入 file object f .

array.tolist()

将数组转换为具有相同项的普通列表。

array.tounicode()

将数组转换为Unicode字符串。数组必须是类型 'u' 数组;否则为 ValueError 提高了。使用 array.tobytes().decode(enc) 从其他类型的数组中获取Unicode字符串。

当数组对象被打印或转换为字符串时,它表示为 array(typecode, initializer) . 这个 初始化器 如果数组为空,则省略;否则,如果 类型码'u' ,否则它是一个数字列表。保证字符串能够转换回具有相同类型和值的数组,使用 eval() ,只要 array 类已使用导入 from array import array . 实例:

array('l')
array('u', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

参见

模块 struct

异构二进制数据的打包和解包。

模块 xdrlib

打包和解包一些远程过程调用系统中使用的外部数据表示(XDR)数据。

NumPy

NumPy包定义了另一个数组类型。