2012-07-26 21 views
25

मैं 6 लाख बिट्स कहने के लिए एक बहुत बड़े आकार की एक छोटी सरणी कैसे घोषित कर सकता हूं?पायथन में बिट्स की सरणी कैसे बनाएं?

+13

आप क्या हासिल करने की कोशिश कर रहे हैं? – ThiefMaster

+1

इसका उपयोग बिटमैप जैसे कुछ के लिए किया जा सकता है। – SJP

+0

यह भी देखें http://stackoverflow.com/questions/2147848/how-do-i-represent-and-work-with-n-bit-vectors-in-python - डुप्लिकेट के रूप में चिह्नित करने में संकोच। – tripleee

उत्तर

30
from bitarray import bitarray 

a = bitarray(2**20) 

आप http://pypi.python.org/pypi/bitarray/

+1

_bitarray_ मानक पायथन में प्रतीत नहीं होता है, लेकिन इसके बजाय _pypy_ द्वारा प्रदान की जाने वाली सुविधा है। – zvezda

+0

मुझे लगता है कि आपका मतलब है * पीआईपी * – Uxio

+7

मुझे लगता है कि आपका मतलब है "पायपीआई * * में शामिल, पायथन पैकेज इंडेक्स। : पी – Gandaro

21

पर इस मॉड्यूल के बारे में और अधिक जानकारी की जांच कर सकते bitstring मॉड्यूल मदद मिल सकती है:

from bitstring import BitArray 
a = BitArray(6000000) 

यह स्मृति का एक मेगाबाइट से भी कम समय लगेगा, और यह सेट करना आसान है बिट्स को पढ़ें, स्लाइस करें और व्याख्या करें। बिटरैर मॉड्यूल के विपरीत यह शुद्ध पायथन है, साथ ही यह पायथन 3 के लिए काम करता है।

अधिक जानकारी के लिए the documentation देखें।

5

का उपयोग कर शून्य करने के लिए bitarray मॉड्यूल का उपयोग कर

pip install bitarray 

फिर, इस कोड आकार 6 लाख का एक सा सरणी पैदा करेगा,

from bitarray import bitarray 
bit_array = bitarray(6000000) 

आप सभी बिट्स को प्रारंभ कर सकते हैं जाओ

bit_array.setall(0) 

एक विशेष बिट सेट करने के लिए, बिट संख्या 25, 1 से कहें, यह करें:

bit_array[25]=1 
+1

मैंने पहले से ही 'पीआईपी' अपडेट किया [लिंक] (https://packaging.python.org/installing/) फिर विंडोज़ पर 'पायथन-एमपी इंस्टॉल बिटरैर' निष्पादित करें। – yW0K5o

5

यह एक-लाइनर बाइट्स को सही/गलत बिट मानों की सूची में परिवर्तित करता है। 6 एम बिट्स के लिए प्रदर्शन नहीं कर सकता है लेकिन छोटे झंडे के लिए यह ठीक होना चाहिए और अतिरिक्त निर्भरताओं की आवश्यकता नहीं है।

>>> 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] 
संबंधित मुद्दे