zoukankan      html  css  js  c++  java
  • Python3之数组(array)

    当我们需要1000万个浮点数的时候,数组(array)的效率要比列表(list)要高得多,因为数组在背后存的并不是float对象,而是数字的机器翻译,也就是字节表述。这一点和c语言中的数组一样。

    再比如说,如果需要频繁对序列做先出先进的操作,collection.deque(双端队列)的速度应该会更快。

    1.数组

    如果我们需要一个只包含数字的列表,那么array.array比list更高效。数组支持所有跟可变序列有关的操作,包括.pop,.insert和.extend。

    另外,数组还提供从文件读取和存入文件的更快的方法,如.frombytes和.tofile。

     
     

    Python数组跟C语言数组一样精简。创建数组需要一个类型码,这个类型码用来表示在底层的C语言应该存放怎样的数据类型。比如b类型码代表的是有符号的字符(signedchar),array('b')创建出的数组就只能存放一个字节大小的整数,范围从-128到127,这样在序列很大的时候,我们能节省很多空间。

    array类型码如下:

    Type code      C Type     Minimum size in bytes
         'b'    signed integer           1
         'B'    unsigned integer         1
         'u'    Unicode character        2 
         'h'    signed integer           2
         'H'    unsigned integer         2
         'i'    signed integer           2
         'I'    unsigned integer         2
         'l'    signed integer           4
         'L'    unsigned integer         4
         'q'    signed integer           8 
         'Q'    unsigned integer         8 
         'f'    floating point           4
         'd'    floating point           8

    一个浮点型的数组的创建,存入文件和文件读取的过程:

    >>> from array import array 
    >>> from random import random
    >>> floats = array('d', (random() for i in range(10**7)))
    >>> floats[-1]
    0.021901117799701275
    
    >>> fp = open('floats.bin', 'wb')
    >>> floats.tofile(fp)
    >>> fp.close()
    
    >>> floats_2 = array('d')
    >>> fp = open('floats.bin', 'rb')
    >>> floats_2.fromfile(fp, 10**7)
    >>> fp.close()
    >>> floats_2[-1]
    0.021901117799701275
    
    >>> floats_2 == floats
    True
    array创建的数组不适用于数字操作(比如矩阵和矢量运算)。另外+=和*=运算符可以用于array的添加。
    从python3.4开始,数组(array)类型不再支持诸如list.sort()这种就地排序方法。要给数组排序的话,得用sorted函数新建一个数组:
    >>> import array
    >>> a = array.array(a.typecode, sorted(a))
  • 相关阅读:
    如来神掌第一式第十九招----Samba 详解
    如来神掌第一式第十八招----PXE 详解
    如来神掌第二式第七招----典型shell示例
    如来神掌第二式第六招----Shell游戏案例之猜数字
    如来神掌第二式第五招----Shell游戏案例之贪吃蛇
    如来神掌第二式第四招----Shell应用案例之网络监控
    如来神掌第二式第三招----Shell应用案例之主机监控
    如来神掌第二式第二招----Shell应用案例之大文件删除
    如来神掌第二式第一招----Shell脚本基础
    如来神掌第一式第十七招----Mysql 详解
  • 原文地址:https://www.cnblogs.com/haoqirui/p/9977031.html
Copyright © 2011-2022 走看看