The
'q'
and
'Q'
type codes are available only if
the platform C compiler used to build Python supports C
long
long
,
or, on Windows,
__int64
.
3.3 新版功能.
值的实际表示会由机器的架构决定(严格地说是由 C 实现决定)。 实际大小可通过
itemsize
属性来获取。
这个模块定义了以下类型:
class
array.
array
(
typecode
[
,
initializer
]
)
一个包含由
typecode
限制类型的条目的新数组,并由可选的
initializer
值进行初始化,该值必须为一个列表、
bytes-like object
或包含正确类型元素的可迭代对象。
如果给定一个列表或字符串,该 initializer 会被传给新数组的
fromlist()
,
frombytes()
或
fromunicode()
方法(见下文)以将初始条目添加到数组中。 否则会将可迭代对象作为 initializer 传给
extend()
方法。
数组对象支持普通的序列操作如索引、切片、拼接和重复等。 当使用切片赋值时,所赋的值必须为具有相同类型码的数组对象;所有其他情况都将引发
TypeError
。 数组对象也实现了缓冲区接口,可以用于所有支持
字节类对象
的场合。
以下数据项和方法也受到支持:
array.
typecode
用于创建数组的类型码字符。
array.
buffer_info
(
)
返回一个元组
(address,
length)
以给出用于存放数组内容的缓冲区元素的当前内存地址和长度。 以字节表示的内存缓冲区大小可通过
array.buffer_info()[1]
*
array.itemsize
来计算。 这在使用需要内存地址的低层级(因此不够安全) I/O 接口时会很有用,例如某些
ioctl()
操作。 只要数组存在并且没有应用改变长度的操作,返回数值就是有效的。
当在 C 或 C++ 编写的代码中使用数组对象时(这是有效使用此类信息的唯一方式),使用数组对象所支持的缓冲区接口更为适宜。 此方法仅保留用作向下兼容,应避免在新代码中使用。 缓冲区接口的文档参见
缓冲协议
。
array.
tounicode
(
)
将数组转换为一个 Unicode 字符串。 数组必须是类型为
'u'
的数组;否则将引发
ValueError
。 请使用
array.tobytes().decode(enc)
来从其他类型的数组生成 Unicode 字符串。
当一个数组对象被打印或转换为字符串时,它会表示为
array(typecode,
initializer)
。 如果数组为空则
initializer
会被省略,否则如果
typecode
为
'u'
则它是一个字符串,否则它是一个数字列表。 使用
eval()
保证能将字符串转换回具有相同类型和值的数组,只要
array
类已通过
from
array
import
array
被引入。 例如: