Jak mogę zadeklarować trochę tablic o bardzo dużym rozmiarze, powiedzmy 6 milionów bitów?Jak utworzyć tablicę bitów w Pythonie?
Odpowiedz
from bitarray import bitarray
a = bitarray(2**20)
Możesz sprawdzić więcej informacji na temat tego modułu w http://pypi.python.org/pypi/bitarray/
Moduł bitstring może pomóc:
from bitstring import BitArray
a = BitArray(6000000)
To zajmie mniej niż megabajt pamięci i łatwo ustawić , czytać, wycinać i interpretować bitów. W przeciwieństwie do modułu bitarray jest to czysty Python, a także działa w Pythonie 3.
Aby uzyskać więcej informacji, zobacz the documentation.
Get moduł bitarray korzystając
pip install bitarray
Następnie ten kod utworzy tablicę bitowej wielkości 6 milionów,
from bitarray import bitarray
bit_array = bitarray(6000000)
można zainicjować wszystkie bity na zero używając
bit_array.setall(0)
Aby ustawić konkretny bit, powiedz bit nr 25, na 1, zrób to:
bit_array[25]=1
Z góry zaktualizowałem 'pip', patrz [link] (https://packaging.python.org/installing/) Następnie uruchom' python -m pip install bitarray' na Windowsie. – yW0K5o
Ten jednolinijkowy konwertuje bajty na listę wartości bitów Prawda/Fałsz. Może nie być wydajne dla bitów 6M, ale dla małych flag powinno być w porządku i nie wymaga dodatkowych zależności.
>>> 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]
Co próbujesz osiągnąć? – ThiefMaster
To może być używane do czegoś w rodzaju bitmapy. – SJP
Zobacz również http://stackoverflow.com/questions/2147848/how-do-i-represent-and-work-with-n-bit-vectors-in-python - niezdecydowany, aby oznaczyć jako duplikat. – tripleee