专栏地址:每周一个 Python 模块

这个模块定义了一个看起来很像 list 的数据结构,只不过它要求所有成员的类型都要相同。

可以用下表做一个简单参考,array 标准库文档包含完整的类型代码列表。

Code Type Minimum size (bytes)
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

初始化

array 需要两个参数,第一个参数是数据类型,第二个是要传入的数据。

import array
import binasciis = 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))# output
# As byte string: b'This is the array.'
# As array      : array('b', [84, 104, 105, 115, 32, 105, 115, 32,
#  116, 104, 101, 32, 97, 114, 114, 97, 121, 46])
# As hex        : b'54686973206973207468652061727261792e'
复制代码

操作 Arrays

可以采用像操作 Python 其他序列同样的方式来操作 array,支持的操作包括切片,迭代和添加元素到最后等。

import array
import pprinta = 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)))# output
# Initial : array('i', [0, 1, 2])
# Extended: array('i', [0, 1, 2, 0, 1, 2])
# Slice   : array('i', [2, 0, 1])
# Iterator:
# [(0, 0), (1, 1), (2, 2), (3, 0), (4, 1), (5, 2)]
复制代码

Arrays 和 Files

可以将数组中内容写入文件,也可以将文件中内容读取出来存到数组。

import array
import binascii
import tempfilea = array.array('i', range(5))
print('A1:', a)# Write the array of numbers to a temporary file
output = tempfile.NamedTemporaryFile()
a.tofile(output.file)  # must pass an *actual* file
output.flush()# Read the raw data
with open(output.name, 'rb') as input:raw_data = input.read()print('Raw Contents:', binascii.hexlify(raw_data))# Read the data into an arrayinput.seek(0)a2 = array.array('i')a2.fromfile(input, len(a))print('A2:', a2)# output
# A1: array('i', [0, 1, 2, 3, 4])
# Raw Contents: b'0000000001000000020000000300000004000000'
# A2: array('i', [0, 1, 2, 3, 4])
复制代码

此示例说明直接从二进制文件读取数据“raw”,而不是将其读入新数组并将字节转换为适当的类型。

tofile()tobytes()格式化数据,然后 fromfile()frombytes()将其转换回数组实例。

import array
import binasciia = array.array('i', range(5))
print('A1:', a)as_bytes = a.tobytes()
print('Bytes:', binascii.hexlify(as_bytes))a2 = array.array('i')
a2.frombytes(as_bytes)
print('A2:', a2)# output
# A1: array('i', [0, 1, 2, 3, 4])
# Bytes: b'0000000001000000020000000300000004000000'
# A2: array('i', [0, 1, 2, 3, 4])
复制代码

tobytes()frombytes() 都操作的字节字符串,而不是Unicode字符串。

相关文档:

pymotw.com/3/array/ind…

每周一个 Python 模块 | array相关推荐

  1. 每周一个 Python 模块 | time

    专栏地址:每周一个 Python 模块 几乎所有的正式代码中,我们都需要与时间打交道.在Python中,与时间处理有关的模块包括time,datetime以及calendar,本节主要讲解time模块 ...

  2. 每周一个 Python 模块 | hashlib

    专栏地址:每周一个 Python 模块 hashlib 模块定义了用于访问不同加密散列算法的 API.要使用特定的哈希算法,需要先用适当的构造函数或new()创建哈希对象.然后,无论使用何种算法,对象 ...

  3. 每周一个 Python 模块 | calendar

    专栏地址:每周一个 Python 模块 calendar模块定义了Calendar类,它封装了值的计算,比如计算给定月份或年份中周的日期.此外,TextCalendar和 HTMLCalendar类可 ...

  4. python的copy模块是哪个模块_每周一个 Python 模块 | copy

    同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来. copy 模块包括两个功能,copy() 和 deepcopy(),用于复制现有对象. 浅拷贝 copy() 创建的浅表副本 ...

  5. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  6. 手把手教你自己写一个Python模块,并将其发布并安装到自己的Python环境中去

    首先得说明一点,python的模块就是有一些.py文件所构成的,所以要想写一个模块,自己得先写一些python程序,我这里就写一个module1.py 1.接下来,就是先建立一个文件夹my_packa ...

  7. python根目录_每日一练(22)-自己写一个python模块并发布到本机环境

    1.新建目录saycolor-demo mkdir saycolor-demo 2.新建setup.py,内容如下 from packages指定需要导入的python包 3.新建saycolor包, ...

  8. python spss,有没有一个Python模块打开SPSS文件?

    Is there a module for Python to open IBM SPSS (i.e. .sav) files? It would be great if there's someth ...

  9. 如何快速掌握python包_如何快速掌握一个python模块?

    初学者就别想快了. 我自己是这样的.先上网看看一些基础的教程,非常快的过一下,十几分钟,主要是了解这个module能干什么,特别是一些基本的功能,头脑中建立起初步映射. 然后就是用了,不用看了也白搭. ...

最新文章

  1. 推箱子2-向右推!_保持冷静,砍箱子-me脚
  2. 数字化转型案例:源自阿里,中台设计流程及方法
  3. 什么是async、await?
  4. 安卓手机系统可删除的自带软件大集合
  5. ​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
  6. 关于linux kernel编译的几项关键点:
  7. 使用OStressSQL Server压力测试
  8. informix 计算 日期之差
  9. python正则表达式模块re
  10. 人工智能视觉处理教程(包含源码)
  11. fastdfs原理及过程
  12. unity 2d文字跟随主角移动_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐...
  13. php laravel mix,Laravel框架 之 Mix
  14. 4Packet Tracer – 配置 VLAN
  15. 可怜的博主跟小豆人杠起来啦!Python制作的吃豆人小游戏,快来围观!!
  16. 韩服17+苹果ID验证
  17. 平台业务收款分账产品设计 - 支付计费分账
  18. k-nearest neighbor,k近邻法
  19. BDB 入门篇 第3章 DPL First Steps 直接持久层第一步
  20. 四、mysql 插入、更新、删除

热门文章

  1. python学习_Python学习资料整理
  2. Could not find the required component ‘tf2_geometry_msgs‘. The following CMake error indicates that
  3. 不要抱怨,每个人的人生都不完美
  4. 生日祝福html_更新,礼包选择,头像框及太子生日金币活动
  5. 直接请求接口_【分享】接口是什么?实现原理的是什么?
  6. vscode中控制台不能输入_vscode控制台不能输入怎么办
  7. 对于计算机专业的调查报告,计算机专业调查报告.doc
  8. 怎么使用计算机算法,浅谈如何在用计算机来更好的实现Floyd算法
  9. facebook加密货币项目_Facebook数字货币:Libra的起源—加密货币(比特币)
  10. 计算机组成原理试卷分析,《计算机组成原理与汇编语言》试卷分析报告.doc.docx...