Come posso dichiarare un array di bit di dimensioni molto grandi, ad esempio 6 milioni di bit?Come creare una matrice di bit in Python?
risposta
from bitarray import bitarray
a = bitarray(2**20)
È possibile controllare di più informazioni su questo modulo alla http://pypi.python.org/pypi/bitarray/
Il modulo bitstring può aiutare:
from bitstring import BitArray
a = BitArray(6000000)
questo richiederà meno di un megabyte di memoria, ed è facile da impostare , leggere, tagliare e interpretare i bit. A differenza del modulo bitarray è puro Python, in più funziona per Python 3.
Vedere the documentation per ulteriori dettagli.
scaricare il modulo del BitArray utilizzando
pip install bitarray
Quindi, questo codice creerà una matrice di bit di dimensioni 6 milioni,
from bitarray import bitarray
bit_array = bitarray(6000000)
È possibile inizializzare tutti i bit a zero usando
bit_array.setall(0)
Per impostare un bit particolare, ad esempio bit numero 25, su 1, procedere come segue:
bit_array[25]=1
Ho aggiornato 'pip' prima di vedere [collegamento] (https://packaging.python.org/installing/) Quindi eseguire' python -m pip install bitarray' su Windows. – yW0K5o
Questo one-liner converte i byte in un elenco di valori di bit True/False. Potrebbe non essere performante per i bit 6M ma per i piccoli flag dovrebbe andare bene e non ha bisogno di ulteriori dipendenze.
>>> 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]
Cosa stai cercando di ottenere? – ThiefMaster
Questo potrebbe essere usato per qualcosa come una bitmap. – SJP
Vedere anche http://stackoverflow.com/questions/2147848/how-do-i-represent-and-work-with-n-bit-vectors-in-python - esitante da contrassegnare come duplicato. – tripleee