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

简介: Python数据结构与算法(7)---数组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()格式化数据一起用。

相关文章
|
4天前
|
算法 搜索推荐 C语言
Python实现数据结构与算法
【5月更文挑战第13天】学习数据结构与算法能提升编程能力,解决复杂问题,助你面试成功。从选择资源(如《算法导论》、Coursera课程、LeetCode)到实践编码,逐步学习基本概念,通过Python实现栈、队列和快速排序。不断练习、理解原理,探索高级数据结构与算法,参与开源项目和算法竞赛,持续反思与实践,以提升技术能力。
6 0
|
4天前
|
机器学习/深度学习 算法 数据可视化
Python 数据结构和算法实用指南(四)(4)
Python 数据结构和算法实用指南(四)
10 1
|
4天前
|
机器学习/深度学习 存储 算法
Python 数据结构和算法实用指南(四)(3)
Python 数据结构和算法实用指南(四)
14 1
|
4天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(四)(2)
Python 数据结构和算法实用指南(四)
10 0
|
4天前
|
存储 算法 Serverless
Python 数据结构和算法实用指南(四)(1)
Python 数据结构和算法实用指南(四)
14 0
|
4天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(三)(4)
Python 数据结构和算法实用指南(三)
10 1
|
4天前
|
存储 搜索推荐 算法
Python 数据结构和算法实用指南(三)(3)
Python 数据结构和算法实用指南(三)
10 1
|
4天前
|
存储 算法 前端开发
Python 数据结构和算法实用指南(三)(2)
Python 数据结构和算法实用指南(三)
10 1
|
4天前
|
存储 算法 编译器
Python 数据结构和算法实用指南(三)(1)
Python 数据结构和算法实用指南(三)
13 1
|
4天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(二)(4)
Python 数据结构和算法实用指南(二)
11 2