Array เป็นโครงสร้างข้อมูลที่ได้รับความนิยมอย่างมากในภาษา C/C++, Java และอื่นๆ ในอาร์เรย์ภาษาเหล่านี้ถูกกำหนดให้เป็นคอลเล็กชันขององค์ประกอบมากกว่าหนึ่งประเภทข้อมูลที่คล้ายคลึงกัน Python ไม่มีอาร์เรย์เทียบเท่าในตัว It's List และ Tuple คือชุดขององค์ประกอบต่างๆ แต่อาจมีหลายประเภท
โมดูลอาร์เรย์ของ Python จำลองอาร์เรย์ประเภท C โมดูลกำหนดคลาส 'อาร์เรย์' ตัวสร้างต่อไปนี้สร้างวัตถุอาร์เรย์:
array(typecode, initializer)
อาร์กิวเมนต์ typecode กำหนดประเภทของอาร์เรย์ Initializer ควรเป็นลำดับที่มีองค์ประกอบทั้งหมดของประเภทที่ตรงกัน
คำสั่งต่อไปนี้จะสร้างวัตถุอาร์เรย์จำนวนเต็ม:
>>> import array
>>> arr = array.array('i', range(5))
>>> arr
array('i', [0, 1, 2, 3, 4])
>>> type(arr)
<class 'array.array'>
>>> array.typecodes
'bBuhHiIlLqQfd' โมดูลอาร์เรย์กำหนดแอตทริบิวต์ typecodes ซึ่งส่งคืนสตริง อักขระแต่ละตัวในสตริงแสดงถึงรหัสประเภทที่ระบุประเภท C และประเภท Python ที่เทียบเท่า:
| พิมพ์โค้ด | ประเภท C | ประเภท Python |
|---|---|---|
| 'b' | สัญลักษณ์ที่ลงนามแล้ว | int |
| 'B' | ถ่านที่ไม่ได้ลงชื่อ | int |
| 'u' | Py_UNICODE | อักขระ Unicode |
| 'h' | ลงนามแบบย่อ | int |
| 'H' | แบบสั้นที่ไม่ได้ลงนาม | int |
| 'i' | ลงชื่อเข้าใช้ | int |
| 'ฉัน' | ไม่ได้ลงนาม | int |
| 'l' | ลงนามแบบยาว | int |
| 'L' | ไม่มีเครื่องหมายยาว | int |
| 'q' | เซ็นชื่อแบบยาว | int |
| 'Q' | unsigned long long | int |
| 'f' | ลอย | ลอย |
| 'd' | คู่ | ลอย |
อาร์กิวเมนต์ initializer สามารถเป็นไบต์เช่นวัตถุ ตัวอย่างต่อไปนี้สร้างอาร์เรย์จากการแทนค่าไบต์ของสตริง
>>> arr1 = array.array('b', b'Hello')
>>> arr1
array('b', [72, 101, 108, 108, 111]) คลาสอาร์เรย์กำหนดวิธีการดังต่อไปนี้:
array.buffer_info()
เมธอดนี้ส่งคืนทูเพิล (ที่อยู่, ความยาว) ซึ่งระบุที่อยู่หน่วยความจำปัจจุบันและความยาวในองค์ประกอบของบัฟเฟอร์ที่ใช้เก็บเนื้อหาของอาร์เรย์
>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.buffer_info()
(2201141755144, 5) นับ()
เมธอดนี้จะคืนค่าจำนวนครั้งขององค์ประกอบบางอย่างในอาร์เรย์
>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr.count(2)
1 ขยาย()
วิธีนี้จะผนวกรายการจาก iterable ต่อท้ายอาร์เรย์หรือ iterable ซึ่งต้องมีรหัสประเภทเดียวกันทุกประการ ถ้าไม่เช่นนั้น TypeError จะถูกยกขึ้น
>>> arr = array.array('i', [0, 1, 2, 3, 4])
>>> arr1 = array.array('i',[10,20,30])
>>> arr.extend(arr1)
>>> arr
array('i', [0, 1, 2, 3, 4, 10, 20, 30]) fromfile()
เมธอดนี้อ่าน n รายการ (เป็นค่าเครื่อง) จากอ็อบเจ็กต์ไฟล์และต่อท้ายอาร์เรย์
ในตัวอย่างต่อไปนี้ ก่อนอื่นเราเปิดไฟล์ในโหมดเขียนไบนารี
>>> file = open('test.txt','wb')
>>> file.write(b'Hello Python')
12
>>> file.close() ตอนนี้เราใช้ไฟล์นี้เพื่อผนวกข้อมูลเข้ากับวัตถุอาร์เรย์
>>> a = array.array('i')
>>> file = open('test.txt','rb')
>>> a.fromfile(file,file.tell())
>>> a
array('i', [1819043144, 2035294319, 1852794996]) ต่อท้าย()
วิธีนี้จะต่อท้ายรายการใหม่ต่อท้ายอาร์เรย์
fromlist()
วิธีนี้จะผนวกรายการจากรายการไปยังอาร์เรย์ ซึ่งเทียบเท่ากับ x ในรายการ:a.append(x)
>>> a = array.array('i')
>>> a.append(10)
>>> a
array('i', [10])
>>> num = [20,30,40,50]
>>> a.fromlist(num)
>>> a
array('i', [10, 20, 30, 40, 50]) insert()
แทรกรายการใหม่ในอาร์เรย์ก่อนตำแหน่งที่ระบุ
>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.insert(2,25)
>>> a
array('i', [10, 20, 25, 30, 40, 50]) ป๊อป()
เมธอดนี้ส่งคืนไอเท็มที่ดัชนีที่กำหนดหลังจากลบออกจากอาร์เรย์
>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> x = a.pop(2)
>>> x
30
>>> a
array('i', [10, 20, 40, 50]) ลบ()
เมธอดนี้จะลบรายการที่ระบุครั้งแรกออกจากอาร์เรย์
>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> a.remove(30)
>>> a
array('i', [10, 20, 40, 50]) tofile()
เมธอดนี้เขียนรายการทั้งหมดไปยังอ็อบเจ็กต์ไฟล์โดยเปิดใช้สิทธิ์การเขียน
>>> a = array.array('i', [10, 20, 30, 40, 50])
>>> file = open("test.txt","wb")
>>> a.tofile(file)
>>> file.close()
>>> file = open("test.txt","rb")
>>> file.read()
b'\n\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00(\x00\x00\x002\x00\x00\x00'