array-高效的数值数组详解(36)Python语言(必读进阶学习教程)(参考资料)
该模块定义了一个对象类型,它可以紧凑地表示一组基本值:字符,整数,浮点数。数组是序列类型,其行为与列表非常相似,只是存储在其中的对象类型受到约束。通过使用类型代码在对象创建时指定 类型,类型代码是单个字符。定义了以下类型代码:
输入代码 | C型 | Python类型 | 最小大小(字节) | 笔记 |
---|---|---|---|---|
'b' |
签名的char | INT | 1 | |
'B' |
无符号的字符 | INT | 1 | |
'u' |
Py_UNICODE | Unicode字符 | 2 | (1) |
'h' |
签了字 | INT | 2 | |
'H' |
未签约的短片 | INT | 2 | |
'i' |
签名int | INT | 2 | |
'I' |
unsigned int | INT | 2 | |
'l' |
签了很久 | INT | 4 | |
'L' |
无符号长 | INT | 4 | |
'q' |
签了很久 | INT | 8 | (2) |
'Q' |
unsigned long long | INT | 8 | (2) |
'f' |
浮动 | 浮动 | 4 | |
'd' |
双 | 浮动 | 8 |
笔记:
-
的
'u'
类型代码对应于Python的过时的Unicode字符(Py_UNICODE
这是wchar_t
)。根据平台,它可以是16位或32位。'u'
将与Py_UNICODE
API 的其余部分一起删除。从版本3.3开始不推荐使用,将在4.0版中删除。
-
该
'q'
和'Q'
类型代码只可如果用来构建Python平台的C编译器支持C ,或者,在Windows上,。longlong
__int64
版本3.3中的新功能。
值的实际表示由机器体系结构确定(严格地说,由C实现)。可以通过itemsize
属性访问实际大小。
该模块定义以下类型:
- class
array.
array
(typecode [,initializer ] ) - 一个新数组,其项目受typecode限制,并从可选的初始化值初始化,该值必须是列表,类似 字节的对象,或者可以在适当类型的元素上进行迭代。
如果给一个列表或字符串,初始化传递给新阵列的
fromlist()
,frombytes()
或fromunicode()
方法(见下文)初始项添加到阵列。否则,可迭代初始值设定项将传递给该extend()
方法。
array.
typecodes
- 包含所有可用类型代码的字符串。
数组对象支持索引,切片,连接和乘法的普通序列操作。使用切片分配时,指定的值必须是具有相同类型代码的数组对象; 在所有其他情况下, TypeError
被提出。数组对象也实现缓冲区接口,并且可以在支持字节类对象的任何地方使用。
还支持以下数据项和方法:
array.
typecode
- 用于创建数组的typecode字符。
array.
itemsize
- 内部表示中一个数组项的长度(以字节为单位)。
array.
append
(x )- 将值为x的新项追加到数组的末尾。
array.
buffer_info
()- 返回一个元组,给出当前内存地址和用于保存数组内容的缓冲区元素的长度。内存缓冲区的大小(以字节为单位)可以计算为。当使用需要内存地址的低级(和固有不安全)I / O接口(例如某些操作)时,这偶尔会很有用 。只要数组存在且未对其应用长度更改操作,返回的数字就是有效的。
(address,length)
array.buffer_info()[1] * array.itemsize
ioctl()
注意
当使用用C或C ++编写的代码中的数组对象(有效利用这些信息的唯一方法)时,使用数组对象支持的缓冲区接口更有意义。维护此方法是为了向后兼容,应在新代码中避免使用。缓冲区接口记录在缓冲区协议中。
array.
byteswap
()- “Byteswap”阵列的所有项目。仅支持大小为1,2,4或8字节的值; 对于其他类型的值,
RuntimeError
引发了。从具有不同字节顺序的机器上写入的文件中读取数据时,它非常有用。
array.
count
(x )- 返回数组中x的出现次数。
array.
extend
(可迭代的)- 将项目从iterable追加到数组的末尾。如果iterable是另一个数组,它必须具有完全相同的类型代码; 如果没有,
TypeError
将被提出。如果iterable不是数组,则它必须是可迭代的,并且其元素必须是要附加到数组的正确类型。
array.
frombytes
(s )- 从字符串中追加项目,将字符串解释为机器值数组(就好像它是使用该
fromfile()
方法从文件中读取的一样)。版本3.2中的新功能:为了清晰起见,
fromstring()
重命名frombytes()
为。
array.
fromfile
(f,n )- 从文件对象 f中读取n个项目(作为机器值)并将它们附加到数组的末尾。如果可用的项目少于n个, 则会引发,但可用的项目仍会插入到阵列中。f必须是一个真正的内置文件对象; 使用方法的其他东西是不行的。
EOFError
read()
array.
fromlist
(列表)- 附加列表中的项目。这相当于除了存在类型错误之外,数组不变。
for x in list: a.append(x)
array.
fromstring
()- 已弃用的别名
frombytes()
。
array.
fromunicode
(s )- 使用给定unicode字符串中的数据扩展此数组。数组必须是类型
'u'
数组; 否则aValueError
被提出。使用array.frombytes(unicodestring.encode(enc))
为Unicode数据追加到一些其它类型的阵列。
array.
index
(x )- 返回最小的i,使得i是数组中第一次出现x的索引 。
array.
insert
(i,x )- 在位置i之前的数组中插入值为x的新项目。负值被视为相对于数组的末尾。
array.
pop
([ i ] )- 从数组中删除索引为i的项并返回它。可选参数默认为
-1
,因此默认情况下会删除并返回最后一项。
array.
remove
(x )- 从数组中删除第一个x。
array.
reverse
()- 反转数组中项目的顺序。
array.
tobytes
()- 将数组转换为机器值数组并返回字节表示形式(通过该
tofile()
方法将写入文件的相同字节序列。)版本3.2中的新功能:为了清晰起见,
tostring()
重命名tobytes()
为。
array.
tofile
(f )- 将所有项目(作为机器值)写入文件对象 f。
array.
tolist
()- 将数组转换为具有相同项的普通列表。
array.
tostring
()- 已弃用的别名
tobytes()
。
array.
tounicode
()- 将数组转换为unicode字符串。数组必须是类型
'u'
数组; 否则aValueError
被提出。用于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)数据。
- 数字Python文档
- Numeric Python扩展(NumPy)定义了另一种数组类型; 有关Numerical Python的更多信息,请 访问http://www.numpy.org/。