Python中的二进制数组

5 投票
4 回答
34639 浏览
提问于 2025-04-15 11:08

如何在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

看看这个数组模块

import array
array.array('B', [0] * 10000)

你可以用一个生成器来初始化它,而不是传递一个列表,这样会更节省内存。

撰写回答