36

非常に大きなサイズ (たとえば 600 万ビット) のビット配列を宣言するにはどうすればよいですか?

4

5 に答える 5

41
from bitarray import bitarray

a = bitarray(2**20)

このモジュールの詳細については、http://pypi.python.org/pypi/bitarray/で確認できます。

于 2012-07-26T12:25:04.443 に答える
25

ビット文字列モジュールが役立つ場合があります。

from bitstring import BitArray
a = BitArray(6000000)

これには1メガバイト未満のメモリが必要であり、ビットの設定、読み取り、スライス、および解釈が簡単です。bitarrayモジュールとは異なり、純粋なPythonであり、Python3でも機能します。

詳細については、ドキュメントを参照してください。

于 2012-08-11T21:28:53.773 に答える
10

このワンライナーは、バイトを 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]
于 2016-03-22T08:30:12.423 に答える