【发布时间】:2016-11-30 13:25:43
【问题描述】:
我需要一个巨大的布尔数组。所有值都应初始化为“True”:
arr = [True] * (10 ** 9)
但是像上面那样创建它会占用太多内存。所以我决定使用bytearray:
arr = bytearray(10 ** 9) # initialized with zeroes
是否可以像使用b'\x00' 初始化一样有效地使用b'\x01' 初始化bytearray?
我知道我可以用零初始化 bytearray 并反转我的逻辑。但如果可能的话,我宁愿不这样做。
时间:
>>> 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
【问题讨论】:
标签: python python-3.x python-bytearray