详解Python中的array数组模块相关使用


Posted in Python onJuly 05, 2016

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

import array
import binascii
s = 'This is the array.'
a = array.array('c', s)
print 'As string:', s
print 'As array :', a
print 'As hex  :', binascii.hexlify(a)

数组配置为包含一个字节序列,用一个简单的字符串初始化。

>>> ================================ RESTART ================================
>>> 
As string: This is the array.
As array : array('c', 'This is the array.')
As hex  : 54686973206973207468652061727261792e

处理数组
类似于其他python序列,可以采用同样方式扩展和处理array。

import array
import pprint
a = array.array('i', xrange(3))
print 'Initial :', a
a.extend(xrange(3))
print 'Extended:', a
print 'slice: :', a[2:5]
print 'Itetator:'
print list(enumerate(a))

支持的操作包括分片,迭代以及向末尾增加元素。

>>> ================================ RESTART ================================
>>> 
Initial : array('i', [0, 1, 2])
Extended: array('i', [0, 1, 2, 0, 1, 2])
slice: : array('i', [2, 0, 1])
Itetator:
[(0, 0), (1, 1), (2, 2), (3, 0), (4, 1), (5, 2)]


数组和文件
可以使用高效读/写文件的专用内置方法将数组的内容写入文件或从文件读取数组。

import array
import binascii
import tempfile

a = array.array('i', xrange(5))
print 'A1: ',a
output = tempfile.NamedTemporaryFile()
a.tofile(output.file)
output.flush

with open(output.name, 'rb') as input:
  raw_input = input.read()
  print 'Raw Contents:', binascii.hexlify(raw_data)

  input.seek(0)
  a2 = array.array('i')
  a2.fromfile(input, len(a))
  print 'A2: ', a2

   

候选字节顺序
如果数组中的数据没有采用固有的字节顺序,或者在发送到一个采用不同字节顺序的系统前需要交换顺序,可以在python转换整个数组而无须迭代处理每个元素。

import array
import binascii

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

a1 = array.array('i', xrange(5))
a2 = array.array('i', xrange(5))
a2.byteswap()

fmt = '%10s %10s %10s %10s'
print fmt % ('A1_hex', 'A1', 'A2_hex', 'A2')
print fmt % (('-' * 10,) * 4)
for value in zip(to_hex(a1), a1, to_hex(a2), a2):
  print fmt % value

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

>>> ================================ RESTART ================================
>>> 
  A1_hex     A1   A2_hex     A2
---------- ---------- ---------- ----------
 00000000     0  00000000     0
 01000000     1  00000001  16777216
 02000000     2  00000002  33554432
 03000000     3  00000003  50331648
 04000000     4  00000004  67108864
Python 相关文章推荐
python中遍历文件的3个方法
Sep 02 Python
Python生成随机MAC地址
Mar 10 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
Python微信公众号开发平台
Jan 25 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
python读取图片任意范围区域
Jan 23 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 #Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 #Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 #Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 #Python
Python实现代码统计工具(终极篇)
Jul 04 #Python
在win和Linux系统中python命令行运行的不同
Jul 03 #Python
win10系统中安装scrapy-1.1
Jul 03 #Python
You might like
php实现jQuery扩展函数
2009/10/30 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
Python实现图像几何变换
2015/07/06 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python实现数据写入excel表格
2018/03/25 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
劳动工资科岗位职责范本
2014/03/02 职场文书
广告词串烧
2014/03/19 职场文书
优秀教师单行材料
2014/12/16 职场文书
新郎结婚感言
2015/07/31 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs