每周一个 Python 模块 | array
专栏地址:每周一个 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相关推荐
- 每周一个 Python 模块 | time
专栏地址:每周一个 Python 模块 几乎所有的正式代码中,我们都需要与时间打交道.在Python中,与时间处理有关的模块包括time,datetime以及calendar,本节主要讲解time模块 ...
- 每周一个 Python 模块 | hashlib
专栏地址:每周一个 Python 模块 hashlib 模块定义了用于访问不同加密散列算法的 API.要使用特定的哈希算法,需要先用适当的构造函数或new()创建哈希对象.然后,无论使用何种算法,对象 ...
- 每周一个 Python 模块 | calendar
专栏地址:每周一个 Python 模块 calendar模块定义了Calendar类,它封装了值的计算,比如计算给定月份或年份中周的日期.此外,TextCalendar和 HTMLCalendar类可 ...
- python的copy模块是哪个模块_每周一个 Python 模块 | copy
同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来. copy 模块包括两个功能,copy() 和 deepcopy(),用于复制现有对象. 浅拷贝 copy() 创建的浅表副本 ...
- GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...
- 手把手教你自己写一个Python模块,并将其发布并安装到自己的Python环境中去
首先得说明一点,python的模块就是有一些.py文件所构成的,所以要想写一个模块,自己得先写一些python程序,我这里就写一个module1.py 1.接下来,就是先建立一个文件夹my_packa ...
- python根目录_每日一练(22)-自己写一个python模块并发布到本机环境
1.新建目录saycolor-demo mkdir saycolor-demo 2.新建setup.py,内容如下 from packages指定需要导入的python包 3.新建saycolor包, ...
- 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 ...
- 如何快速掌握python包_如何快速掌握一个python模块?
初学者就别想快了. 我自己是这样的.先上网看看一些基础的教程,非常快的过一下,十几分钟,主要是了解这个module能干什么,特别是一些基本的功能,头脑中建立起初步映射. 然后就是用了,不用看了也白搭. ...
最新文章
- 推箱子2-向右推!_保持冷静,砍箱子-me脚
- 数字化转型案例:源自阿里,中台设计流程及方法
- 什么是async、await?
- 安卓手机系统可删除的自带软件大集合
- ​Cookie 从入门到进阶:一文彻底弄懂其原理以及应用
- 关于linux kernel编译的几项关键点:
- 使用OStressSQL Server压力测试
- informix 计算 日期之差
- python正则表达式模块re
- 人工智能视觉处理教程(包含源码)
- fastdfs原理及过程
- unity 2d文字跟随主角移动_用Unity制作GalGame/视觉小说游戏的模型素材与插件推荐...
- php laravel mix,Laravel框架 之 Mix
- 4Packet Tracer – 配置 VLAN
- 可怜的博主跟小豆人杠起来啦!Python制作的吃豆人小游戏,快来围观!!
- 韩服17+苹果ID验证
- 平台业务收款分账产品设计 - 支付计费分账
- k-nearest neighbor,k近邻法
- BDB 入门篇 第3章 DPL First Steps 直接持久层第一步
- 四、mysql 插入、更新、删除
热门文章
- python学习_Python学习资料整理
- Could not find the required component ‘tf2_geometry_msgs‘. The following CMake error indicates that
- 不要抱怨,每个人的人生都不完美
- 生日祝福html_更新,礼包选择,头像框及太子生日金币活动
- 直接请求接口_【分享】接口是什么?实现原理的是什么?
- vscode中控制台不能输入_vscode控制台不能输入怎么办
- 对于计算机专业的调查报告,计算机专业调查报告.doc
- 怎么使用计算机算法,浅谈如何在用计算机来更好的实现Floyd算法
- facebook加密货币项目_Facebook数字货币:Libra的起源—加密货币(比特币)
- 计算机组成原理试卷分析,《计算机组成原理与汇编语言》试卷分析报告.doc.docx...