小编DJV*_*DJV的帖子

是否可以有效地使用非零值初始化字节数组?

我需要一个巨大的布尔数组。所有值都应初始化为“ True”:

arr = [True] * (10 ** 9)
Run Code Online (Sandbox Code Playgroud)

但是按上述方法创建会占用太多内存。所以我决定使用bytearray它:

arr = bytearray(10 ** 9)  # initialized with zeroes
Run Code Online (Sandbox Code Playgroud)

是否有可能初始化bytearrayb'\x01'同样有效,因为它是由初始化b'\x00'

我知道我可以bytearray用零初始化并反逻辑。但是如果可能的话,我宁愿不这样做。

timeit

>>> from timeit import timeit
>>> def f1():
...   return bytearray(10**9)
... 
>>> def f2():
...   return bytearray(b'\x01'*(10**9))
... 
>>> timeit(f1, number=100)
14.117428014000325
>>> timeit(f2, number=100)
51.42543800899875
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-bytearray

4
推荐指数
1
解决办法
2340
查看次数

标签 统计

python ×1

python-3.x ×1

python-bytearray ×1