array मॉड्यूल C-स्टाइल टाइप्ड ऐरे प्रदान करता है - कॉम्पैक्ट, एक ही टाइप के न्यूमेरिक वैल्यूज़ स्टोर करने के लिए। लिस्ट के विपरीत, सभी एलिमेंट्स एक ही C टाइप के होने चाहिए।
बनाना
import array
# टाइप कोड 'i' = साइन्ड इंट (C int)
arr = array.array('i', range(5))
print(arr) # array('i', [0, 1, 2, 3, 4])
print(type(arr)) #
टाइप कोड्स
| कोड | C टाइप | पायथन टाइप | आकार (बाइट्स) |
|---|---|---|---|
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'u' | Py_UNICODE | Unicode कैरेक्टर | 2 |
'h' | signed short | int | 2 |
'H' | unsigned short | int | 2 |
'i' | signed int | int | 2/4 |
'I' | unsigned int | int | 2/4 |
'l' | signed long | int | 4/8 |
'L' | unsigned long | int | 4/8 |
'q' | signed long long | int | 8 |
'Q' | unsigned long long | int | 8 |
'f' | float | float | 4 |
'd' | double | float | 8 |
उपलब्ध कोड्स: array.typecodes → 'bBuhHiIlLqQfd'
बाइट्स से बनाना
arr1 = array.array('b', b'Hello')
print(arr1) # array('b', [72, 101, 108, 108, 111])
मुख्य मेथड्स
buffer_info()
मेमोरी एड्रेस और लंबाई लौटाता है।
arr = array.array('i', [0, 1, 2, 3, 4])
print(arr.buffer_info()) # (address, 5)
count(x)
x के ऑकरेंसेज़ गिनता है।
arr.count(2) # 1
extend(iterable)
सेम टाइप कोड वाले इटरेबल से एलिमेंट्स जोड़ता है।
arr = array.array('i', [0, 1, 2])
arr1 = array.array('i', [10, 20, 30])
arr.extend(arr1)
print(arr) # array('i', [0, 1, 2, 10, 20, 30])
fromfile(file, n)
फाइल से n मशीन वैल्यूज़ पढ़कर ऐपेंड करता है।
# लिखें
with open('test.bin', 'wb') as f:
f.write(b'Hello Python')
# पढ़ें
a = array.array('i')
with open('test.bin', 'rb') as f:
a.fromfile(f, f.tell())
print(a) # प्लेटफॉर्म-निर्भर इंटरप्रिटेशन
append(x) / fromlist(list)
a = array.array('i')
a.append(10)
a.fromlist([20, 30, 40, 50])
print(a) # array('i', [10, 20, 30, 40, 50])
insert(i, x)
a.insert(2, 25) # इंडेक्स 2 पर 25 डालें
pop([i]) / remove(x)
x = a.pop(2) # इंडेक्स 2 हटाकर लौटाएं
a.remove(30) # पहला 30 हटाएं
tofile(file)
सभी आइटम्स को बाइनरी फाइल में लिखें।
a = array.array('i', [10, 20, 30, 40, 50])
with open('test.bin', 'wb') as f:
a.tofile(f)
array vs लिस्ट vs NumPy
| विशेषता | list | array | NumPy |
|---|---|---|---|
| टाइप प्रतिबंध | कोई नहीं | सिंगल C टाइप | सिंगल dtype |
| मेमोरी दक्षता | कम | उच्च | बहुत उच्च |
| गणित ऑपरेशन्स | नहीं | सीमित | व्यापक (वेक्टराइज़्ड) |
| बहुआयामी | नेस्टेड लिस्ट्स | नहीं | हाँ (ndarray) |
| डिपेंडेंसी | बिल्ट-इन | बिल्ट-इन | बाहरी |
कब उपयोग करें
- बड़ी मात्रा में न्यूमेरिक डेटा जहां मेमोरी महत्वपूर्ण है।
- बाइनरी फाइल I/O (स्ट्रक्चर्ड डेटा)।
- C एक्सटेंशन्स/सिस्टम कॉल्स के साथ इंटरफेसिंग।
- NumPy ओवरकिल हो जब (छोटे स्क्रिप्ट्स, कोई डिपेंडेंसी नहीं)।