一尘不染

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

python

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

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

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


阅读 470

收藏
2020-02-22

共1个答案

一尘不染

基本上,Python列表非常灵活,可以保存完全异构的任意数据,并且可以在摊销后的固定时间内非常高效地附加到它们。如果你需要高效而又省时地缩小和扩大列表,则可以采用这些方法。但是它们比C数组占用更多的空间。

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

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

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

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

2020-02-22