Python3标准库:array数组

Posted 爱编程的小灰灰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3标准库:array数组相关的知识,希望对你有一定的参考价值。

1. array数组

array模块定义了一个序列数据结构,看起来与list很相似,只不过所有成员都必须是相同的基本类型。支持的类型包括所有数值类型或其他固定大小的基本类型(如字节)。

代码类型最小大小(字节)
b int 1
B int 1
h signed short 2
H unsigned short 2
i signed int 2
I unsigned int 2
l signed long 4
L unsigned long 4
q signed long long 8
Q unsigned long long 8
f float 4
d double float 8

1.1 初始化

array被实例化时可以提供一个参数来描述允许哪种数据类型,还可以有一个存储在数组中的初识数据序列。

import array
import binascii

s = b\'This is the array.\'
a = array.array(\'b\', s)

print(\'As byte string:\', s)
print(\'As array      :\', a)
print(\'As hex        :\', binascii.hexlify(a))

在这个例子中,数组被配置为包含一个字节序列,并用一个简单的字符串初始化。

 

1.2 处理数组

与其他Python序列相似,可以采用同样的方式扩展和处理array。

import array
import pprint

a = array.array(\'i\', range(3))
print(\'Initial :\', a)

a.extend(range(3))
print(\'Extended:\', a)

print(\'Slice   :\', a[2:5])

print(\'Iterator:\')
print(list(enumerate(a)))

目前支持的操作包括分片、迭代以及在末尾增加元素。

 

 

1.3 候选字节顺序

如果数组中数据没有采用原生的字节顺序,或者在发送到一个采用不同字节顺序的系统(或在网络上发送)之前数据需要交换顺序,那么可以由Python转换整个数组而不必迭代处理每一个元素。

import array
import binascii

def to_hex(a):
    chars_per_item = a.itemsize * 2  # 2 hex digits
    hex_version = binascii.hexlify(a)
    num_chunks = len(hex_version) // chars_per_item
    for i in range(num_chunks):
        start = i * chars_per_item
        end = start + chars_per_item
        yield hex_version[start:end]

start = int(\'0x12345678\', 16)
end = start + 5
a1 = array.array(\'i\', range(start, end))
a2 = array.array(\'i\', range(start, end))
a2.byteswap()

fmt = \'{:>12} {:>12} {:>12} {:>12}\'
print(fmt.format(\'A1 hex\', \'A1\', \'A2 hex\', \'A2\'))
print(fmt.format(\'-\' * 12, \'-\' * 12, \'-\' * 12, \'-\' * 12))
fmt = \'{!r:>12} {:12} {!r:>12} {:12}\'
for values in zip(to_hex(a1), a1, to_hex(a2), a2):
    print(fmt.format(*values))

byteswap()方法会用C交换数组中元素的字节顺序,这比用Python循环处理数据高效的多。

以上是关于Python3标准库:array数组的主要内容,如果未能解决你的问题,请参考以下文章

javascript常用代码片段

python常用到哪些库

Python3标准库:filecmp比较文件

Python3 NumPy库之ndarray数组

Python3 NumPy库之ndarray数组

Python3标准库:contextlib上下文管理器工具