小编典典

Python列表与数组-何时使用?

python

如果要创建一维数组,则可以将其实现为列表,也可以使用标准库中的“数组”模块。我一直将列表用于一维数组。

我想改用数组模块的原因或情况是什么?

是为了性能和内存优化,还是我缺少明显的东西?


阅读 168

收藏
2020-12-20

共1个答案

小编典典

基本上,Python列表非常灵活,可以保存完全异构的任意数据,并且可以在摊销后的固定时间内非常高效地附加到它们。如果您需要高效而又省时地缩小和增加列表,则可以采用这些方法。但是它们
比C数组占用更多的空间
,部分原因是列表中的每个项目都需要构造一个单独的Python对象,即使对于可以用简单C类型(例如floatuint64_t)表示的数据也是如此。

array.array类型,在另一方面,是只在C数组的薄包装。它只能保存同构数据(即所有相同类型的数据),因此仅使用sizeof(one object) * length内存字节。通常,在需要将C数组公开给扩展名或系统调用(例如ioctlfctnl)时,应使用它。

array.array也是在Python 2.x()中表示 可变 字符串的一种合理方法array('B', bytes)。但是,Python
2.6+和3.x提供了一个可变 字节
字符串bytearray

但是,如果要对数字数据的均质数组进行 数学运算 ,则最好使用NumPy,它可以自动对复杂的多维数组进行矢量化操作。

简而言之array.array当您需要 除数学之外的其他 原因而需要同构C数据数组时,此选项很有用。

2020-12-20