Python标准库—array模块

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']
>>> 
上一篇:Lesson 1-2


下一篇:【Flask之Flask-Session】 �