Normalerweise ist es am besten, die Kosten der Verwendung eines Byte pro Wert zu zahlen, anstatt ein wenig, und Sie kann verwenden bytearray
(a seit 2.6 eingebaut) für diesen Zweck:
a = bytearray(100) # 100 values all initialized to 0/False
# or initially true:
b = bytearray(b'\x01' * 100) # 100 values all initialized to 1/True
# While you'll get 0 and 1 back, True and False can be assigned to it
a[1] = True
b[1] = False
in den meisten Fällen Adressierung zu verwenden, desto effizienter ist die beste Option sein, da es Byte Dies ist in der Regel, wenn es Daten verursachen würde aus zu verschütten RAM zu einer Auslagerungsdatei.
Wenn Sie wirklich Platz für viele Flags benötigen, benötigen Sie ein Paket von Drittanbietern, das optimiert, um ein Bit pro Wert zu erhalten, z. bitarray
(C-Erweiterung für maximale Geschwindigkeit, aber immer noch langsamer als bytearray
für viele Zwecke) oder bitvector
oder bitstring
(Pure Python, um Kompilierungskomplikationen zu minimieren, und bieten manchmal zusätzliche Funktionen einfacher, aber zuverlässig langsamer als bytearray
, wenn nicht Speicher beschränkt).
Mögliches Duplikat von [Wie erstellt man ein Array von Bits in Python?] (Http://stackoverflow.com/questions/11669178/how-to-create-an-array-of-bits-in-python) – ShadowRanger