Python/array

من موسوعة حسوب
مراجعة 13:32، 23 أغسطس 2018 بواسطة Mohammed Taher (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصحيحة والأعداد ذات الفاصلة العائمة بشكل مضغوط. تعد المصفوفات نوعًا من أنواع التسلسلات وتشبه القوائم في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة.

أنواع الكائنات التي يمكن تخزينها في المصفوفات

يجب تحديد نوع الكائنات عند إنشاء المصفوفة وذلك باستخدام رمز النوع وهو عبارة عن حرف واحد فقط.

يبين الجدول التالي رموز الأنواع المتاحة:

رمز النوع النوع في لغة C النوع في بايثون الحجم الأدنى بالبايتات ملاحظات
'b' حرف ذو إشارة int 1  
'B' حرف بدون إشارة int 1  
'u' Py_UNICODE محرف يونيكود 2 (1)
'h' عدد من نوع short ذو إشارة int 2  
'H' عدد من نوع short بدون إشارة int 2  
'i' عدد من نوع int ذو إشارة int 2  
'I' عدد من نوع int بدون إشارة int 2  
'l' عدد من نوع long ذو إشارة int 4  
'L' عدد من نوع short بدون إشارة int 4  
'q' عدد من نوع long long ذو إشارة int 8 (2)
'Q' عدد من نوع long long بدون إشارة int 8 (2)
'f' عدد ذو فاصلة عائمة float 4  
'd' عدد من نوع double float 8  

ملاحظات:

  1. يمثّل النوع 'u' حرف يونيكود الخاص المهمل في بايثون. وقد يكون حجمه 16 بت أو 32 بت وذلك حسب المنصّة التي تعمل فيها اللغة. سيحذف الرمز 'u' مع بقية الواجهة البرمجية Py_UNICODE. هذا الرمز أصبح مهملًا منذ الإصدار 3.3 من اللغة، وسيحذف في الإصدار 4.0 منها.
  2. الرمزان 'q' و 'Q' متوفّران فقط إن كان مصرّف C المستخدم لبناء بايثون يدعم نوع long long في C أو يدعم النوع ‎__int64 في نظام ويندوز. هذا الرمز جديد في الإصدار 3.3 من بايثون.

يُحدّد التمثيل الفعلي للقيم بواسطة معمارية جهاز التشغيل (وبعبارة أدق بواسطة C). ويمكن الوصول إلى الحجم الفعلي عن طريق الخاصية itemsize.

الأنواع التي تعرّفها الوحدة

تعرّف الوحدة الأنواع التالية:

array.array()‎

تنشئ هذه الدالة البانية مصفوفة جديدة تكون عناصرها مقيدة بالنوع المحدد في معاملاتها.

array.typecodes

سلسلة نصية تتضمن جميع رموز الأنواع المتاحة.

تدعم كائنات array عمليات التسلسلات الاعتيادية من فهرسة indexing وتقطيع slicing وربط concatenation ومضاعفة multiplication. عند إجراء عملية إسناد لقطعة من المصفوفة يجب أن تكون القيمة المسندة كائن array يحمل نفس رمز النوع، وإلا فإنّ اللغة تطلق الخطأ TypeError. تستخدم كائنات array كذلك واجهة buffer، ويمكن استخدامها في أي مكان تكون فيه الكائنات الشبيهة بالبايتات مدعومة.

عند طباعة كائن array أو تحويل إلى سلسلة نصية، فإنّه يمثّل بالهيئة array(typecode, initializer)‎. ويحذف initializer إن كانت المصفوفة فارغة، وإلا فإنّه يكون سلسلة نصية إن كان رمز النوع هو 'u'، وفيما عدا ذلك يكون قائمة من الأرقام. 

يمكن ضمان إعادة تحويل السلسلة النصية إلى مصفوفة من النوع والقيمة ذاتها باستخدام الدالة eval()‎ ما دامت صنف المصفوفة مستوردًا باستخدام عبارة from array import array

يعرض المثال التالي بعض أنواع المصفوفات:

array('l')
array('u', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

خصائص كائنات array

تقدم كائنات array الخصائص التالية:

array.typecode

رمز النوع الذي استخدم لإنشاء المصفوفة.

>>> import array
>>> a1 = array.array('u', 'Hello World')
>>> a1.typecode
'u'

array.itemsize

طول عنصر واحد في المصفوفة بالبايتات في التمثيل الداخلي.

>>> import array
>>> a1 = array.array('u', 'Hello World')
>>> a1.itemsize
4

توابع كائنات array

تقدم كائنات array مجموعة التوابع التالية:

التابع array.append()‎

يضيف التابع عنصرًا جديدًا يحمل القيمة المعطاة إلى نهاية المصفوفة.

التابع array.buffer_info()‎

يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في buffer والمستخدمة لاستيعاب محتويات المصفوفة.

التابع array.byteswap()‎

يجري هذا التابع عملية تبادل بايتات byteswap لجميع عناصر المصفوفة.

التابع array.count()‎

يعيد التابع عدد مرات ظهور القيمة المعطاة في المصفوفة.

التابع array.extend()‎

يلحق التابع عناصر كائن التكرار المعطى إلى نهاية المصفوفة.

التابع array.frombytes()‎

يلحق التابع عناصر السلسلة النصية المعطاة وذلك بتفسير السلسلة النصية كمصفوفة من قيم الجهاز machine values (كما لو أنّها مقروءة من ملف باستخدام التابع fromfile()).

التابع array.fromfile()‎

يقرأ التابع n من العناصر (كقيم جهاز machine values) من كائن الملف المعطى ويلحقها بنهاية المصفوفة.

التابع array.fromlist()‎

يلحق التابع عناصر القائمة المعطاة بالمصفوفة.

التابع array.fromstring()‎

اسم بديل مهمل للتابع frombytes()‎.

التابع array.fromunicode()‎

يوسع التابع المصفوفة بإضافة البيانات من السلسلة النصية المرمّزة بترميز Unicode.

التابع array.index()‎

يعيد التابع موقع أول ظهور للقيمة المعطاة في المصفوفة.

التابع array.insert()‎

يدرج التابع عنصرًا جديدًا يحمل القيمة المعطاة في المصفوفة قبل الموقع المحدد.

التابع array.pop()‎

يحذف التابع العنصر في الموقع i من المصفوفة ويعيده.

التابع array.remove()‎

يحذف التابع أول ظهور للقيمة المعطاة من المصفوفة.

التابع array.reverse()‎

يقلب التابع ترتيب العناصر في المصفوفة.

التابع array.tobytes()‎

يحول التابع المصفوفة إلى مصفوفة من قيم الجهاز.

التابع array.tofile()‎

يكتب التابع جميع العناصر (كقيم جهاز) في كائن الملف المعطى.

التابع array.tolist()‎

يحول التابع المصفوفة إلى قائمة عادية تتضمن نفس العناصر.

التابع array.tostring()‎

الاسم البديل المهمل للتابع tobytes()‎.

التابع array.tounicode()‎

يحول التابع المصفوفة إلى سلسلة نصية بترميز Unicode.

انظر أيضًا

المصادر