python-使用array构建高效的存储

在 Python 中,array 是由标准库模块 array 提供的一种数据结构,用于高效存储和操作固定类型的数值数组。与 Python 的内置列表类似,array 可以存储多个元素,但与列表不同的是,array 中的所有元素必须是同一类型,并且类型在数组创建时固定。



模块导入

使用前需要导入模块:

from array import array


主要特点

  1. 固定类型: 数组中的所有元素必须具有相同的数据类型。 数据类型由 typecode 指定,表示数组中元素的类型。
  2. 内存效率高: 数组使用更少的内存空间,因为它直接存储元素的二进制表示。 适合需要高性能处理数值数据的场景。
  3. 支持切片和迭代: 可以像列表一样进行切片、迭代、索引操作。


创建数组

通过 array 构造函数创建数组:

arr = array(typecode, initializer)
  • 参数说明


常见 typecode

Typecode数据类型描述内存大小(字节)
'b'有符号整数范围:-128 到 1271
'B'无符号整数范围:0 到 2551
'u'Unicode 字符串单个字符2
'h'有符号短整数范围:-32,768 到 32,7672
'H'无符号短整数范围:0 到 65,5352
'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()转换为列表


注意事项

  1. 数组适合存储大量同类型数值,效率比列表高。
  2. 如果需要更多功能(如支持多维数组),可以考虑使用 numpy
文章标签:

评论(0)