python標準庫-array 模塊

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

array 模塊是python中實現的一種高效的數組存儲類型。它和list類似,可是全部的數組成員必須是同一種類型,在建立數組的時候,就肯定了數組的類型。python

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的數組轉換爲字符串。app

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())

輸出以下:spa

array('B', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
'\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017'
array('h', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
'\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000
\010\000\011\000\012\000\013\000\014\000\015\000\016\000\017\000'

在某種程度上,array 能夠被當成一個普通的序列,可是這個序列裏不能出現不一樣類型的變量。code

例子:把arrays 當成是普通序列orm

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,

結果以下:htm

array('B', [3, 4, 1, 2])
'\003\004\001\002'
3 4 1 2

array 模塊同時提供了一個高效的方法把原始二進制轉換爲一個整數系列。blog

例子:把字符串轉換爲整數數組

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/

更多教程:阿貓學編程

相關文章
相關標籤/搜索