前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
array
模块定义了一种对象类型,可以紧凑的表示以 字符
、整数
、浮点数
等基本类型为元素组成的数组。array
模块中定义的数组属于序列类型,其行为也与列表类型非常相似,但是数组中的元素的数据类型是受到限制的,只能设置在初始化时指定的某一种类型。
++PS: 数组与列表、元组等组合数据类型相似,可以由多个值组成。出于个人习惯,小编把这些值称为元素,也就是说,列表、元组等可以是由多个元素组成的,在本文中也将组成数组的那些值也称为元素。++
array
模块在使用时,需要先实例化一个数组对象,然后再进行下一步操作:
array.array(typecode[, initializer])
'''
参数:
typecode: 指定当前数组所能接受的元素数据类型
initializer: 可选参数, 数组初始化时添加的元素, 必须是可迭代对象, 元素的数据类型受参数 typecode 的限制
'''
typecode
参数的值是一个字符,这个字符被称为类型码,其代表一种类型限制,所有的类型码可以使用 array.typecodes
查看:
import array
print(array.typecodes)
# bBuhHiIlLqQfd
在上述的例子中,返回值中的每个字符都是一个类型码,那么这些类型码都是什么意思呢?
类型码 C 类型 Python 类型 以字节表示的最小尺寸
'b' signed char int 1
'B' unsigned char int 1
'u' wchar_t Unicode 字符 2
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 2
'I' unsigned int int 2
'l' signed long int 4
'L' unsigned long int 4
'q' signed long long int 8
'Q' unsigned long long int 8
'f' float float 4
'd' double float 8
接下来就可以初始化一个数组了:
test = array.array('u', 'ABC')
print(test)
# array('u', 'ABC')
初始化的元素类型一定要和设置的类型码一致,否则将报错:
test = array.array('b', 'ABC')
# TypeError: cannot use a str to initialize an array with typecode 'b'
array
模块的大多数内容都在初始化后的数组对象上展开的,那么下面将根据功能进行分组介绍。
属性
array.typecode
: 获取数组的类型码