详解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中调用ggplot的三种方法
Apr 08 Python
Python中文件操作简明介绍
Apr 13 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
Python Socket编程之多线程聊天室
Jul 28 Python
python如何查看微信消息撤回
Nov 27 Python
Django 迁移、操作数据库的方法
Aug 02 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
什么是Python中的顺序表
Jun 02 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 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 json_encode()函数返回json数据实例代码
2014/10/10 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
JS常用知识点整理
2017/01/21 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python如何在终端里面显示一张图片
2016/08/17 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
触摸春天教学反思
2014/02/03 职场文书
秘书英文求职信
2014/04/16 职场文书
校园文明标语
2014/06/13 职场文书
大学生党员自我评价
2015/03/04 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript