python-使用array构建高效的存储
已于 2025年01月16日 22:17 修改
访问次数:13
在 Python 中,array 是由标准库模块 array 提供的一种数据结构,用于高效存储和操作固定类型的数值数组。与 Python 的内置列表类似,array 可以存储多个元素,但与列表不同的是,array 中的所有元素必须是同一类型,并且类型在数组创建时固定。
模块导入
使用前需要导入模块:
from array import array
主要特点
- 固定类型: 数组中的所有元素必须具有相同的数据类型。 数据类型由 typecode 指定,表示数组中元素的类型。
- 内存效率高: 数组使用更少的内存空间,因为它直接存储元素的二进制表示。 适合需要高性能处理数值数据的场景。
- 支持切片和迭代: 可以像列表一样进行切片、迭代、索引操作。
创建数组
通过 array 构造函数创建数组:
arr = array(typecode, initializer)
- 参数说明:
常见 typecode
| Typecode | 数据类型 | 描述 | 内存大小(字节) |
|---|---|---|---|
'b' | 有符号整数 | 范围:-128 到 127 | 1 |
'B' | 无符号整数 | 范围:0 到 255 | 1 |
'u' | Unicode 字符串 | 单个字符 | 2 |
'h' | 有符号短整数 | 范围:-32,768 到 32,767 | 2 |
'H' | 无符号短整数 | 范围:0 到 65,535 | 2 |
'i' | 有符号整数 | 平台相关(常为 4 字节) | 2 或 4 |
'I' | 无符号整数 | 平台相关(常为 4 字节) | 2 或 4 |
'l' | 有符号长整数 | 平台相关(常为 4 字节) | 4 |
'L' | 无符号长整数 | 平台相关(常为 4 字节) | 4 |
'f' | 单精度浮点数 | 4 | |
'd' | 双精度浮点数 | 8 |
示例代码
创建数组
from array import array
# 创建一个存储有符号整数的数组
arr = array('i', [1, 2, 3, 4, 5])
print(arr) # 输出:array('i', [1, 2, 3, 4, 5])
添加和删除元素
arr.append(6) # 添加元素 6
print(arr) # 输出:array('i', [1, 2, 3, 4, 5, 6])
arr.remove(3) # 移除值为 3 的元素
print(arr) # 输出:array('i', [1, 2, 4, 5, 6])
访问和切片
print(arr[2]) # 输出:4
print(arr[:3]) # 输出:array('i', [1, 2, 4])
转换为其他数据结构
# 转换为列表
lst = arr.tolist()
print(lst) # 输出:[1, 2, 4, 5, 6]
存储和读取二进制数据
# 将数组保存到文件
with open('data.bin', 'wb') as f:
arr.tofile(f)
# 从文件读取数组
arr2 = array('i')
with open('data.bin', 'rb') as f:
arr2.fromfile(f, len(arr))
print(arr2) # 输出:array('i', [1, 2, 4, 5, 6])
常用方法
| 方法 | 描述 |
|---|---|
append(x) | 在数组末尾追加元素 x |
extend(iterable) | 扩展数组,添加一个可迭代对象的所有元素 |
insert(i, x) | 在索引 i 处插入元素 x |
pop([i]) | 移除并返回索引 i 的元素,默认移除最后一个 |
remove(x) | 移除第一个值为 x 的元素 |
index(x) | 返回值为 x 的第一个元素的索引 |
reverse() | 原地反转数组 |
tofile(f) | 将数组写入二进制文件 |
fromfile(f, n) | 从二进制文件读取 n 个元素 |
tobytes() | 将数组转换为字节对象 |
frombytes(b) | 从字节对象加载数组 |
tolist() | 转换为列表 |
注意事项
- 数组适合存储大量同类型数值,效率比列表高。
- 如果需要更多功能(如支持多维数组),可以考虑使用
numpy。
评论(0)