zoukankan      html  css  js  c++  java
  • python标准库-array 模块

    原文地址:http://www.bugingcode.com/blog/python_module_array.html

    array 模块是python中实现的一种高效的数组存储类型。它和list相似,但是所有的数组成员必须是同一种类型,在创建数组的时候,就确定了数组的类型。

    Type code C Type Python Type Minimum size in bytes
    'c' char character 1
    'b' signed char int 1
    'B' unsigned char int 1
    'u' Py_UNICODE Unicode character 2 (see note)
    'h' signed short int 2
    'H' unsigned short int 2
    'i' signed int int 2
    'I' unsigned int long 2
    'l' signed long int 4
    'L' unsigned long long 4
    'f' float float 4
    'd' double float 8

    创建 一组 int的数组:

    #!/usr/bin/python
    #coding=utf-8
    
    import array
    
    a = array.array("i", range(16)) 
    for i in a:
        print i
    

    下面是一组关于array的例子,是通过tostring 方法把内部结构转为一个字符串。

    例子:使用array模块将一个int的数组转换为字符串。

    import array
    
    a = array.array("B", range(16)) # unsigned char
    b = array.array("h", range(16)) # signed short
    
    print a
    print repr(a.tostring())
    
    print b
    print repr(b.tostring())
    

    输出如下:

    array('B', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
    '00010203040506071011121314151617'
    array('h', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
    '00000100020003000400050006000700
    10001100120013001400150016001700'
    

    在某种程度上,**array ** 可以被当成一个普通的序列,但是这个序列里不能出现不同类型的变量。

    例子:把arrays 当成是普通序列

    import array
    
    a = array.array("B", [1, 2, 3])
    
    a.append(4)
    
    a = a + a
    
    a = a[2:-2]
    
    print a
    print repr(a.tostring())
    for i in a:
        print i,
    

    结果如下:

    array('B', [3, 4, 1, 2])
    '03040102'
    3 4 1 2
    

    **array **模块同时提供了一个高效的方法把原始二进制转换为一个整数系列。

    例子:把字符串转换为整数数组

    import array
    
    a = array.array("i", "fish license") # signed integer
    
    print a
    print repr(a.tostring())
    print a.tolist()
    

    结果如下:

    array('i', [1752394086, 1667853344, 1702063717])
    'fish license'
    [1752394086, 1667853344, 1702063717]
    

    最后看看array模块是如何确定当前平台的字节存储顺序。

    例子:使用array 模块确定当前平台的字节存储顺序

    import array
    
    def little_endian():
        return ord(array.array("i",[1]).tostring()[0])
    
    if little_endian():
        print "little-endian platform (intel, alpha)"
    else:
        print "big-endian platform (motorola, sparc)"
    

    结果如下:

    big-endian platform (motorola, sparc)
    

    python 2.0 以上也可以使用 sys.byteorder,它返回结果为“little” 或者“big”:

    例子:使用sys.byteorder模块确定当前平台的字节存储顺序

    import sys
    
    # available in Python 2.0 and later
    if sys.byteorder == "little":
        print "little-endian platform (intel, alpha)"
    else:
        print "big-endian platform (motorola, sparc)"
    

    输出如下:

    'big-endian platform (motorola, sparc)'
    

    转载请标明来之:http://www.bugingcode.com/

    更多教程:阿猫学编程

  • 相关阅读:
    覆盖一个DIV,让radio、checkbox和select只读
    DNN 配置 数据库篇
    Javascript实用语句收录
    绑定Hashtable到DataList
    WebDeploymentSetup 合并程序集时出错(ILMerge.Merge: ERROR)
    只能向页面中添加 ScriptManager 的一个实例
    让DNN添加的别名起作用
    360极速模式(Chrome内核)下由ashx输出的JavaScript代码不起作用
    C#中常用到的时间函数(天数差、星期几等)
    C#实用语句
  • 原文地址:https://www.cnblogs.com/bugingcode/p/8567142.html
Copyright © 2011-2022 走看看