在线文档教程

array

array — Efficient arrays of numeric values

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

输入代码C型Python类型最小字节数
'C'char字符1
'B'签名字符INT1
'B'无符号字符INT1
“u”Py_UNICODEUnicode字符2(见注)
'H'签署简称INT2
'H'无符号短INT2
'i'签名intINT2
'i'无符号整数long2
'L'长签字INT4
'L'无符号长整数long4
'F'浮动浮动4
'd'浮动8

注意

'u'类型代码对应于Python的Unicode字符。在狭窄的Unicode版本中,这是2字节,在宽版本上是4字节。

值的实际表示由机器体系结构决定(严格来说,由C实现)。实际大小可以通过itemsize属性访问。因为Python的普通整数类型不能表示整个范围的C的无符号(长整数)整数,所以存储for 'L''I'items 的值将在检索时表示为Python长整型。

该模块定义了以下类型:

class array.array(typecode[, initializer])

一个新的数组,其项目受typecode限制,并从可选的初始值设定项值初始化,该值必须是一个列表,字符串或可在相应类型的元素上迭代。

在版本2.4中更改:以前只接受列表或字符串。

如果给一个列表或字符串,初始化传递给新阵列的fromlist()fromstring()fromunicode()方法(见下文)初始项添加到阵列。否则,可迭代的初始化器会传递给extend()方法。

array.ArrayType

已过时的别名array

数组对象支持索引,切片,连接和乘法的普通序列操作。使用切片分配时,分配的值必须是具有相同类型代码的数组对象; 在所有其他情况下,都会TypeError被提出。数组对象也实现了缓冲区接口,并且可以在任何支持缓冲区对象的地方使用。

以下数据项和方法也受支持:

array.typecode

用于创建数组的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)

iterable中的项追加到数组的末尾。如果可迭代是另一个数组,它必须具有完全相同的类型代码; 如果没有,TypeError将会被提出。如果iterable不是数组,则它必须是可迭代的,并且其元素必须是要附加到数组的正确类型。

在版本2.4中更改:以前,参数只能是另一个数组。

array.fromfile(f, n)

从文件对象f中读取n项(作为机器值)并将它们附加到数组的末尾。如果少于n个项目可用,则引发,但可用的项目仍插入到数组中。f必须是一个真正的内置文件对象; 其他方法不会做。EOFErrorread()

array.fromlist(list)

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

array.fromstring(s)

追加字符串中的项目,将字符串解释为机器值的数组(如同使用fromfile()方法从文件中读取一样)。

array.fromunicode(s)

用给定的unicode字符串的数据扩展这个数组。该数组必须是一个类型'u'数组; 否则ValueError会提出。使用array.fromstring(unicodestring.encode(enc))为Unicode数据追加到一些其它类型的阵列。

array.index(x)

返回最小的i,这样就是数组中第一个x的索引。

array.insert(i, x)

在位置i之前在数组中插入一个值为x的新项目。负值被视为相对于数组的末尾。

array.pop([i])

从数组中删除具有索引i的项目并将其返回。可选参数默认为-1,所以默认情况下最后一项被移除并返回。

array.read(f, n)

自1.5.1版弃用:使用该fromfile()方法。

从文件对象f中读取n项(作为机器值)并将它们附加到数组的末尾。如果少于n个项目可用,则引发,但可用的项目仍插入到数组中。f必须是一个真正的内置文件对象; 其他方法不会做。EOFErrorread()

array.remove(x)

从数组中删除第一个x

array.reverse()

颠倒数组中项目的顺序。

array.tofile(f)

将所有项目(作为机器值)写入文件对象f

array.tolist()

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

array.tostring()

将数组转换为一组机器值并返回字符串表示形式(与tofile()方法将写入文件的字节序列相同)。

array.tounicode()

将数组转换为unicode字符串。该数组必须是一个类型'u'数组; 否则ValueError会提出。用于array.tostring().decode(enc)从其他类型的数组中获取一个unicode字符串。

array.write(f)

自1.5.1版弃用:使用该tofile()方法。

将所有项目(作为机器值)写入文件对象f

当一个数组对象被打印或转换为一个字符串时,它被表示为array(typecode, initializer)。的初始值设定,如果数组为空被省略,否则它是一个字符串,如果类型代码'c',否则是号码的列表。该字符串保证能够使用相同的类型和值转换回数组eval(),只要array类已经使用导入from array import array。例子:

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