我需要有巨大的布尔数组。所有值都应初始化为“True”:
arr = [True] * (10 ** 9)
但是像上面那样创建它需要太多的内存。所以我决定使用bytearray
它:
arr = bytearray(10 ** 9) # initialized with zeroes
是否可以像初始化bytearray
一样b'\x01'
有效地初始化b'\x00'
?
我知道我可以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