Структура данных для управления длинными строками битов

Какова наилучшая структура данных в n битах (где n составляет около 10 000) в Python, в которой выполнение обычных двоичных операций (&, |, ^) с другими такими структурами данных быстро?


person Randomblue    schedule 22.02.2012    source источник


Ответы (2)


"Быстро" всегда относительно :)

Пакет BitVector, кажется, делает то, что вам нужно. Однако у меня нет опыта работы с ним.

Существует также реализация BitString. Возможно, вы проводите некоторые измерения, чтобы выяснить, какой из них более эффективен для ваших конкретных нужд?

Если вам не нужен конкретный класс и вам не нужны такие вещи, как нарезка или подсчет битов, вы можете просто использовать значения long python, которые представляют собой целые числа произвольной длины. Это может быть наиболее производительной реализацией.

Этот вопрос кажется быть похожим, хотя автору нужно меньше бит и требуется стандартная библиотека.

person MartinStettner    schedule 22.02.2012

Помимо упомянутых Мартином Стеттнером, есть также модуль bitarray, который я использовал на нескольких мероприятия с отличными результатами.

PS: Мой сотый ответ, woohoo!

person Lauritz V. Thaulow    schedule 22.02.2012
comment
Может быть даже более производительным, чем мои предложения, поскольку он реализован на C. OTOH, у вас могут возникнуть проблемы с его установкой, поскольку ему нужен работающий компилятор C. См. stackoverflow.com /questions/780127/ для возможных решений :) - person MartinStettner; 22.02.2012