Python 的 array 模块是用于创建高效、紧凑的数值数组的标准库。与 Python 内置的 list 相比,array 模块创建的数组占用更少内存,并且仅能包含指定类型的元素,适用于对内存敏感的大规模数值处理场景。
常见应用场景:
(1)需要节省内存的大型数值数据处理。
(2)需要与 C 或二进制数据进行接口交互,如通过 buffer、文件读写等。
(3)处理固定类型的数值序列,如整数、浮点数、字符等。
◆ ◆ ◆
核心概念
1、array.array 是核心类
用于创建单一数据类型的数组。与 Python 的 list 不同,它的元素类型是固定的,由 typecode 指定。
2、类型代码(typecode)决定元素类型
如 'i' 表示整数、'f' 表示浮点数等。详见下方支持类型表。
3、数组支持切片、遍历、append/extend/insert/remove/pop 等操作。
语法上接近于 list,但提供了更节省空间的实现。
4、可用于与 C/C++ 的内存缓冲区接口交互(如使用 tobytes())。
◆ ◆ ◆
应用举例
例 1: 创建整数数组并遍历
import array
arr = array.array('i', [1, 2, 3, 4, 5])
for num in arr:
print(num)例 2:追加和插入操作
import array
arr = array.array('i', [10, 20])
arr.append(30)
arr.insert(1, 15) # 在索引 1 插入 15
print(arr.tolist()) # 转为普通列表查看例 3:转换为字节串并写入文件
import array
arr = array.array('h', [100, 200, 300])
with open('data.bin', 'wb') as f:
f.write(arr.tobytes())例 4:从文件中读取为数组
import array
arr = array.array('h')
with open('data.bin', 'rb') as f:
arr.frombytes(f.read())
print(arr)例 5:切片、反转与删除
import array
arr = array.array('i', [1, 2, 3, 4, 5])
print(arr[::-1]) # 倒序输出
del arr[2] # 删除索引为 2 的元素
print(arr)◆ ◆ ◆
常用函数速览
array.array(typecode[, initializer])
创建一个新数组,所有元素类型由 typecode 决定。
参数:
typecode:字符串,指定元素类型(如 'i' 表示整数)
initializer:可选,初始化数据序列
返回:一个 array.array 对象
.append(x)
在数组末尾追加一个元素。
参数:x 为单个与 typecode 类型匹配的值
返回:无
.extend(iterable)
将一个可迭代对象中的元素逐一追加到数组末尾。
参数:任何可迭代对象
返回:无
.insert(i, x)
在索引位置 i 处插入元素 x。
参数:
i:插入的位置索引
x:要插入的元素,类型需匹配
返回:无
.remove(x)
删除数组中第一个值等于 x 的元素。
参数:x 为要删除的值
返回:无
.pop([i])
移除并返回索引为 i 的元素(默认最后一个)。
参数:i 可选,表示索引
返回:被删除的元素
.tobytes()
将整个数组转为字节串(用于存储、传输)。
参数:无
返回:bytes 类型字节串
.frombytes(b)
从字节串 b 中读取数据填充数组。
参数:b 为 bytes 类型
返回:无
.tolist()
将数组转为普通 Python 列表。
参数:无
返回:列表对象
.reverse()
就地反转数组顺序。
参数:无
返回:无
◆ ◆ ◆
补充说明
1、array 只支持基本数值类型,不支持对象、字符串等。
2、若需支持混合类型或复杂结构,建议使用 struct 或 numpy。
3、与 C/C++ 接口打通时,array 是很好的内存交换工具。
4、若仅做通用容器,推荐使用内置 list,其功能更丰富。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.