Python中的二进制数组
如何在Python中创建大数组,创建的效率如何
在C/C++中:
byte *data = (byte*)memalloc(10000);
或者
byte *data = new byte[10000];
在Python中...?
4 个回答
0
你可以使用array模块来高效地创建大数组,但它的速度没有C语言快。如果你打算进行一些数学运算,使用numpy.array会更好。
可以查看这个问题来了解它们之间的比较。
6
你可以通过以下方式预先分配一个列表:
l = [0] * 10000
这样做会比在列表中逐个添加元素稍微快一点,因为它避免了中间的重新分配空间。不过,这样通常会为一个指向整数对象的列表分配空间,这个列表的大小会比C语言中的字节数组要大。
如果你需要更节省内存,可以使用数组对象,也就是:
import array, itertools
a = array.array('b', itertools.repeat(0, 10000))
不过要注意,实际使用时这些数组可能会稍微慢一点,因为在访问元素时需要进行解包处理(也就是说,它们必须先转换成Python的 int
对象)。
9