В присвоении я в настоящее время продолжаю работать, мы должны работать с битовый векторами, но я очень не уверен в том, как сделать это в Python. Они должны смочь быть от 4 битов до 20 битов. Я никогда не работал с битовый вектором прежде, но я предполагаю, что каждый был бы каждый создавать массивы неподписанных байтов, что Вы управляли использованием обычных операций AND/OR/XOR.
Важное ограничение здесь: Я не могу полагаться ни на какие библиотеки кроме предоставленных стандартным Python.
Я думаю, что знаю, как я сделал бы это в C использование массивов неподписанных байтов на 8 битов: например, поворачивать 18-й бит обнуленного массива в тот, я сделал бы что-то как my_bit_array[3] и = 1 <<2
Но так как Python с динамическим контролем типов и не имеет встроенного типа массива, как я пошел бы о выполнении этого pythonic способом?
И действительно ли это возможно (как?) для выражения небольшого вектора размера 20? Я думаю о, возможно, создании вектора на 24 бита / 3 байта и игнорировании 4 битов.
Библиотека BitVector для этих целей является чисто питоновской библиотекой и должна соответствовать указанным вами потребностям.
У него есть списки, которые вы можете заполнить с лолями:
[False] * 20
Библиотека BitVector является для этой цели чистой библиотекой Python и должна соответствовать указанным вами потребностям.
-121--3762462- При использовании Python 2,5 может потребоваться импорт simplejson
:
try:
import json
except ImportError:
import simplejson as json
-121--1173079- Модуль bitarray эффективно выполняет эту операцию с логическими значениями.