【发布时间】:2009-04-15 10:21:22
【问题描述】:
如何在 python 中创建大数组,创建它的效率如何
在 C/C++ 中:
byte *data = (byte*)memalloc(10000);
或
byte *data = new byte[10000];
在python中...?
【问题讨论】:
标签: python
如何在 python 中创建大数组,创建它的效率如何
在 C/C++ 中:
byte *data = (byte*)memalloc(10000);
或
byte *data = new byte[10000];
在python中...?
【问题讨论】:
标签: python
【讨论】:
array.array('B', [0]) * 10000。 (即倍增的短数组)见*.com/a/3214343/448474
您可以预先分配一个列表:
l = [0] * 10000
这将比 .appending 稍微快一点(因为它避免了中间重新分配)。但是,这通常会为整数对象的指针列表分配空间,这将大于 C 中的字节数组。
如果您需要内存效率,您可以使用数组对象。即:
import array, itertools
a = array.array('b', itertools.repeat(0, 10000))
请注意,这些在实际使用中可能会稍微慢一些,因为在访问元素时有一个拆箱过程(它们必须首先转换为 python int 对象)。
【讨论】:
您可以使用 array 模块有效地创建大数组,但使用它不会像 C 那样快。如果您打算做一些数学运算,最好使用 numpy.array
检查this question进行比较。
【讨论】:
通常使用 python,您只需创建一个列表
mylist = []
并将其用作数组。或者,我认为您可能正在寻找数组模块。见http://docs.python.org/library/array.html。
【讨论】: