码迷,mamicode.com
首页 > 编程语言 > 详细

Python3标准库:array数组

时间:2020-02-21 17:41:59      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:简单   star   int   git   alt   数据结构   方法   Python序列   byte   

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 = bThis 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数组

标签:简单   star   int   git   alt   数据结构   方法   Python序列   byte   

原文地址:https://www.cnblogs.com/liuhui0308/p/12335400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!