如何声明一个非常大的位数组,比如 600 万位?
问问题
75340 次
5 回答
41
from bitarray import bitarray
a = bitarray(2**20)
您可以在http://pypi.python.org/pypi/bitarray/查看有关此模块的更多信息
于 2012-07-26T12:25:04.443 回答
10
这个单行将字节转换为真/假位值列表。可能对 6M 位性能不高,但对于小标志应该没问题,不需要额外的依赖项。
>>> flags = bytes.fromhex(b"beef")
>>> bits = [flags[i//8] & 1 << i%8 != 0 for i in range(len(flags) * 8)]
>>> print(bits)
[False, True, True, True, True, True, False, True, True, True, True, True, False, True, True, True]
于 2016-03-22T08:30:12.423 回答
9
使用获取 bitarray 模块
pip install bitarray
然后,这段代码将创建一个大小为 600 万的位数组,
from bitarray import bitarray
bit_array = bitarray(6000000)
您可以使用以下方法将所有位初始化为零
bit_array.setall(0)
要将特定位(例如位号 25)设置为 1,请执行以下操作:
bit_array[25]=1
于 2015-05-15T04:33:29.247 回答
7
很容易
bitarray60000 = 1<<60000
有了它,您可以使用位移运算符来满足您的需求。例如,位置 2 设置为 True 将是:
bitarray60000 | 1<<2
从位置 2 获取位
bitarray60000 & 1<<2
我想这个想法很简单。虽然有些操作可能很棘手。
于 2018-11-21T19:51:09.857 回答