array
类型代码
该模块定义了一个对象类型,可以表示一个基本值的数组:整数、浮点数、字符。通过使用类型代码在对象创建时指定类型,类型代码定义如下表。
Type code | C Type | Python Type | Minimum size in bytes | Notes |
---|---|---|---|---|
'b' |
signed char | int | 1 | |
'B' |
unsigned char | int | 1 | |
'u' |
Py_UNICODE | Unicode character | 2 | (1) |
'h' |
signed short | int | 2 | |
'H' |
unsigned short | int | 2 | |
'i' |
signed int | int | 2 | |
'I' |
unsigned int | int | 2 | |
'l' |
signed long | int | 4 | |
'L' |
unsigned long | int | 4 | |
'q' |
signed long long | int | 8 | (2) |
'Q' |
unsigned long long | int | 8 | (2) |
'f' |
float | float | 4 | |
'd' |
double | float | 8 |
数组对象
-
class
array.array(typecode [,initializer ] )
一个新数组,其项目受typecode限制,并从可选的初始化值初始化,该值必须是列表、类似字节对象或是其它合适的可迭代对象。
-
array.typecodes
包含所有可用类型代码的字符串。
数组对象的数据属性
-
array.typecode
用于创建数组对象的类型字符。
-
array.itemsize
一个数组元素所占内存大小(单位为字节)。
>>> import array >>> a = array.array('i',[1,2,3])#创建一个signed int数组,数组初始值为1,2,3 >>> a array('i', [1, 2, 3]) >>> a.typecode 'i' >>> a.itemsize 4
数组对象的方法
-
array.append(x)
将值为x的新项追加到数组的末尾。
-
array.pop([i])
从数组中删除索引为i的项并返回它。可选参数默认为-1,因此默认情况下会删除并返回最后一项。
-
array.count(x)
返回数值中x出现的次数。
-
array.extend(iterable)
将可迭代对象(iterable)追加到数组末尾。如果iterable是数组,则必须具有相同的typecode,否则抛出TypeError异常;如果不是数值,则必须是可迭代的,并且其元素类型与数组类型相同。
-
array.insert(i,x)
在数组下标i出插入元素x。
-
array.remove(x)
删除数组中第一次出现的x。
-
array.reverse()
反转数组元素位置。
-
array.index(x)
返回元素x在数组中的最小下标。
-
array.frombytes(s)
将字节扩展到数组末尾。
-
array.fromfile(f,n)
从文件对象 f中读取n个项目(作为机器值)并将它们附加到数组的末尾。如果可用的项目少于n个, 则会引发EOFError(read() didn’t return enough bytes),但可用的项目仍会插入到数组中。
-
array.fromlist(list)
使用给定列表扩展数组
for x in list: a.append(x)
-
array.fromstring(s)
array.frombytes的别名。
-
array.fromunicode(s)
使用给定unicode字符扩展数组,数组typecode必须是’u’。
-
array.tobytes()
将数组转换为机器值数组并返回字节表示形式,与array.tofile()方法写入文件的字节序列相同。
-
array.tofile(f)
将所以数据项以机器值写入文件对象f。
-
array.tolist()
将数组转换为具有相同项的普通列表
-
array.tostring()
array.tobytes的别名。
-
array.tounicode()
将数组转换为unicode字符串。数组必须是类型
'u'
数组; 否则抛出ValueError异常。
>>> import array
>>> a = array.array('d') #双精度浮点数组
>>> a.extend([1,2,3,4,5]) #使用列表扩展数组
>>> a
array('d', [1.0, 2.0, 3.0, 4.0, 5.0])
>>> a.tobytes() #将数组转换为字节
b'\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@\x00\x00\x00\x00\x00\x00\x14@'
>>> ac = a.tobytes()
>>> a.frombytes(ac) #通过字节扩展数组
>>> a
array('d', [1.0, 2.0, 3.0, 4.0, 5.0, 1.0, 2.0, 3.0, 4.0, 5.0])
>>> a.tounicode() #typecode非'u'无法使用tounicode
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
a.tounicode()
ValueError: tounicode() may only be called on unicode type arrays
>>> unic = array.array('u','hello')
>>> unic
array('u', 'hello')
>>> unic.tounicode()
'hello'
>>> unic.tolist()
['h', 'e', 'l', 'l', 'o']
>>>