array --- مصفوفات من البيانات العددية

تُعرّف هذه الوحدة النوع array.array: تسلسل موفّر للمساحة من قيم نوع عددي ثابت وحيد، قابل للفهرسة كقائمة لكنه مدعوم بكتلة متجاورة من الذاكرة يمكن الوصول إليها عبر بروتوكول المخزن المؤقت (buffer protocol).

رموز الأنواع المدعومة

يختار وسيط typecode المؤلف من حرف واحد نوع العنصر:

رمز النوع

نوع C

البايتات

نوع Python

'b'

signed char

1

int

'B'

unsigned char

1

int

'h'

signed short

2

int

'H'

unsigned short

2

int

'i'

signed int

2 أو 4

int

'I'

unsigned int

2 أو 4

int

'l'

signed long

4

int

'L'

unsigned long

4

int

'q'

signed long long

8

int

'Q'

unsigned long long

8

int

'f'

float

4

float

'd'

double

8

float

يتطلب الرمزان 'f' و 'd' برنامجاً ثابتاً مبنياً بدعم الفاصلة العائمة (وهو الافتراضي على معظم اللوحات). يتبع العرض الدقيق لـ 'i' و 'I' واجهة C ABI الخاصة بالمضيف --- وهو عادةً 4 بايتات على منافذ Cortex-M.

الأصناف

class array.array(typecode: str, iterable: Iterable = ())

إنشاء مصفوفة بعناصر من النوع المحدد. تُعطى المحتويات الأولية للمصفوفة بواسطة iterable. إذا لم يُقدَّم، تُنشأ مصفوفة فارغة.

بالإضافة إلى الطرق أدناه، تُنفّذ كائنات المصفوفة أيضاً بروتوكول المخزن المؤقت. هذا يعني أنه يمكن الوصول إلى محتويات المصفوفة بأكملها كبايتات خام عبر memoryview أو واجهات أخرى تستخدم هذا البروتوكول.

append(val: Any) None

إلحاق عنصر جديد val بنهاية المصفوفة، مما يزيد حجمها.

extend(iterable: Iterable) None

إلحاق عناصر جديدة موجودة في iterable بنهاية المصفوفة، مما يزيد حجمها.

__getitem__(index: int | slice) Any

قراءة مفهرسة للمصفوفة، تُستدعى بصيغة a[index] (حيث a هي array). تُرجع قيمة إذا كان index من نوع int و array إذا كان index شريحة (slice). تُحسب الفهارس السالبة من النهاية ويُطلق IndexError إذا كان الفهرس خارج النطاق.

ملاحظة: لا يمكن استدعاء __getitem__ مباشرة (a.__getitem__(index) يفشل) وهي غير موجودة في __dict__، لكن a[index] يعمل بالفعل.

__setitem__(index: int | slice, value: Any) None

كتابة مفهرسة في المصفوفة، تُستدعى بصيغة a[index] = value (حيث a هي array). تكون value قيمة واحدة إذا كان index من نوع int و array إذا كان index شريحة (slice). تُحسب الفهارس السالبة من النهاية ويُطلق IndexError إذا كان الفهرس خارج النطاق.

ملاحظة: لا يمكن استدعاء __setitem__ مباشرة (a.__setitem__(index, value) يفشل) وهي غير موجودة في __dict__، لكن a[index] = value يعمل بالفعل.

__len__() int

يُرجع عدد العناصر في المصفوفة، يُستدعى بصيغة len(a) (حيث a هي array).

ملاحظة: لا يمكن استدعاء __len__ مباشرة (a.__len__() يفشل) والطريقة غير موجودة في __dict__، لكن len(a) يعمل بالفعل.

__add__(other: array) array

يُرجع array جديدة هي ناتج ضمّ المصفوفة مع other، يُستدعى بصيغة a + other (حيث a و other كلاهما arrays).

ملاحظة: لا يمكن استدعاء __add__ مباشرة (a.__add__(other) يفشل) وهي غير موجودة في __dict__، لكن a + other يعمل بالفعل.

__iadd__(other: array) array

يضمّ المصفوفة مع other في المكان نفسه (in-place)، يُستدعى بصيغة a += other (حيث a و other كلاهما arrays). مكافئ لـ extend(other).

ملاحظة: لا يمكن استدعاء __iadd__ مباشرة (a.__iadd__(other) يفشل) وهي غير موجودة في __dict__، لكن a += other يعمل بالفعل.

__repr__() str

يُرجع التمثيل النصي للمصفوفة، يُستدعى بصيغة str(a) أو repr(a) (حيث a هي array). يُرجع السلسلة "array(<type>, [<elements>])"، حيث <type> هو حرف رمز النوع للمصفوفة و <elements> قائمة بعناصر المصفوفة مفصولة بفواصل.

ملاحظة: لا يمكن استدعاء __repr__ مباشرة (a.__repr__() يفشل) وهي غير موجودة في __dict__، لكن str(a) و repr(a) كلاهما يعملان.