array
---有效的数值数组¶
这个模块定义了一个对象类型,它可以紧凑地表示一个基本值数组:字符、整数、浮点数。数组是序列类型,其行为与列表非常相似,只是存储在其中的对象类型受到约束。类型在对象创建时通过使用 type code ,它是单个字符。定义了以下类型代码:
类型码 |
C类型 |
Python类型 |
最小字节大小 |
笔记 |
---|---|---|---|---|
|
符号字符 |
int |
1 |
|
|
无符号字符 |
int |
1 |
|
|
wchar_t |
Unicode字符 |
2 |
(1) |
|
符号短 |
int |
2 |
|
|
无符号短整型 |
int |
2 |
|
|
有符号整型 |
int |
2 |
|
|
无符号整型 |
int |
2 |
|
|
符号长 |
int |
4 |
|
|
无符号长 |
int |
4 |
|
|
有符号长整型 |
int |
8 |
|
|
无符号长整型 |
int |
8 |
|
|
浮动 |
浮动 |
4 |
|
|
双重的 |
浮动 |
8 |
笔记:
它可以是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__
带着论据typecode
,initializer
.
- 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])