我需要一个巨大的布尔数组。所有值都应初始化为“ 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)
是否有可能初始化bytearray与b'\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)