python3从零学习-5.1.8、高效的数值数组array

我想请问下,python3从零学习-5.1.8、高效的数值数组array
最新回答
著名奶茶鉴定家

2024-11-04 01:20:06


此模块定义了一种用于紧凑表示基本类型值数组的对象类型,包括字符、整数、浮点数等。数组属于序列类型,与列表类似,但存储对象类型受限。创建数组时使用单个字符的类型码指定类型。已定义的类型码包括:


  • 'u': 对应已过时的unicode字符(Py_UNICODE, 即wchar_t),根据系统平台不同为16位或32位。已从版本3.3起废弃,在版本4.0中移除。

  • 'q'/'Q': 仅在构建Python的平台C编译器支持C long long或Windows的__int64时可用。从版本3.3起新增。


浮点类型('f')和双精度浮点类型('d')遵循IEEE754标准,分别有32位和64位,构成包括符号位、指数位和尾数位。具体构成如下:

  • float: 符号位(第31位, 占1bit), 指数位(第30-23位, 占8bit), 尾数位(第22-0位, 占23bit)

  • double: 符号位(第63位, 占1bit), 指数位(第62-52位, 占11bit), 尾数位(第51-0位, 占52bit)


浮点取值范围主要由指数部分决定。float范围为-2^128到2^128,约-3.4E38到+3.4E38;double范围为-2^1024到2^1024,更宽广。
浮点精度(有效数字)主要由尾数位决定。float有23位,对应7~8位十进制数。不同编译器有效数字可能为7位或8位。
此模块提供`array.array`类创建数组,使用typecode限制类型,并可初始化。`array.typecodes`包含所有可用类型码的字符串。
数组支持普通序列操作如索引、切片、拼接和重复等。使用切片赋值时,所赋值必须为相同类型码的数组对象。数组实现缓冲区接口,适用于所有支持字节类对象的场合。
数组还提供如`array.append`, `array.buffer_info`, `array.byteswap`等数据项和方法。