Как я могу объявить бит массива очень большого размера, скажем, 6 миллионов бит?
Как создать массив бит в Python?
Ответ 1
from bitarray import bitarray
a = bitarray(2**20)
Вы можете узнать больше об этом модуле в http://pypi.python.org/pypi/bitarray/
Ответ 2
Модуль bitstring может помочь:
from bitstring import BitArray
a = BitArray(6000000)
Это займет меньше, чем мегабайт памяти, и легко установить, прочитать, отрезать и интерпретировать биты. В отличие от модуля bitarray, он чистый Python, плюс он работает для Python 3.
Подробнее см. документацию.
Ответ 3
Получить модуль bitarray с помощью
pip install bitarray
Затем этот код создаст бит массива размером 6 миллионов,
from bitarray import bitarray
bit_array = bitarray(6000000)
Вы можете инициализировать все биты до нуля, используя
bit_array.setall(0)
Чтобы установить конкретный бит, например, бит 25, равный 1, выполните следующее:
bit_array[25]=1
Ответ 4
Этот однострочный конвертер преобразует байты в список значений True/False. Может быть, не работает для 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]
Ответ 5
Довольно легко
bitarray60000 = 1<<60000
При этом вы можете использовать оператор bithift для вашего сердца. Например, позиция 2, установленная True, будет:
bitarray60000 | 1<<2
Получение бит из позиции 2
bitarray60000 & 1<<2
Я думаю, идея довольно проста. Хотя некоторые операции могут быть сложными.
Ответ 6
Один из самых простых способов списка (bin (x)) [2:]