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'