Python数据结构与算法(7)---数组array

举报
择城终老 发表于 2021/07/27 00:00:35 2021/07/27
1.6k+ 0 0
【摘要】 目录 前言初识数组array基本用法数据转换 前言 一般来说,我们将Python中的list列表当作数组。但是Python中真正的数组是:array。 它看上去跟list很相似,但是list列表成员可以是任意类型的组合也可以是单一的类型组合,而array数组并不能是,它的所有成员必须是相同的类型。包括了所有的数值类型或其他固定大小的基本类型。 支持的...

前言

一般来说,我们将Python中的list列表当作数组。但是Python中真正的数组是:array。

它看上去跟list很相似,但是list列表成员可以是任意类型的组合也可以是单一的类型组合,而array数组并不能是,它的所有成员必须是相同的类型。包括了所有的数值类型或其他固定大小的基本类型。

支持的类型如下表:

代码 类型 最小大小(字节)
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

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

具体代码如下:

import array

s = b'My name is Li Yuanjing'
a = array.array('b', s)
print(a)

  
 

运行之后,效果如下:
效果

这里,我们直接将字符串转换为对应的数值ASCII编码。其中array.array()函数的第1个参数为类型,具体类型如本博文开头所示。

基本用法

如其他Python序列类似,array数组可以采用同样的方式进行扩展和处理。具体操作如下:

import array

a = array.array('i', range(5))
print("构造函数创建")
print(a)
a.extend(range(5))
print("增添值")
print(a)
print("获取第3到第5个元素(不包括5,从0开始):")
print(a[3:5])
print("转换为list列表")
print(list(enumerate(a)))

  
 

运行之后,效果如下:
基本用法

数据转换

在实际的应用中,往往有时候需要将数组写入文件进行保存。这个时候,如何高效率的存储array数组是非常重要的,毕竟不是文本字符串。

一般来说,我们会将array直接转换为二进制进行存储。具体操作如下:

import array
import binascii

a = array.array('i', range(5))
print(a)
a_bytes = a.tobytes()
print(binascii.hexlify(a_bytes))

a2 = array.array('i')
a2.frombytes(a_bytes)
print(a2)

  
 

运行之后,效果如下:
展示

中间输出的是16进制。tobytes往往与frombytes结合起来使用。文件方面也是,tofile()往往与tobytes()格式化数据一起用。

文章来源: liyuanjinglyj.blog.csdn.net,作者:李元静,版权归原作者所有,如需转载,请联系作者。

原文链接:liyuanjinglyj.blog.csdn.net/article/details/115826805

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。