الفرق بين المراجعتين لصفحة: «Python/array»
لا ملخص تعديل |
لا ملخص تعديل |
||
(2 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف و<nowiki/>[[Python/int|الأعداد الصحيحة]] و<nowiki/>[[Python/float|الأعداد ذات الفاصلة العائمة]] بشكل مضغوط. تعد المصفوفات نوعًا من أنواع التسلسلات وتشبه [[Python/list|القوائم]] في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة. | تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف و<nowiki/>[[Python/int|الأعداد الصحيحة]] و<nowiki/>[[Python/float|الأعداد ذات الفاصلة العائمة]] بشكل مضغوط. تعد المصفوفات نوعًا من أنواع التسلسلات وتشبه [[Python/list|القوائم]] في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة. | ||
== أنواع الكائنات التي يمكن تخزينها في المصفوفات == | |||
يجب تحديد نوع الكائنات عند إنشاء المصفوفة وذلك باستخدام رمز النوع وهو عبارة عن حرف واحد فقط. | |||
يبين الجدول التالي رموز الأنواع المتاحة: | يبين الجدول التالي رموز الأنواع المتاحة: | ||
سطر 103: | سطر 106: | ||
سلسلة نصية تتضمن جميع رموز الأنواع المتاحة. | سلسلة نصية تتضمن جميع رموز الأنواع المتاحة. | ||
تدعم كائنات array عمليات التسلسلات الاعتيادية من فهرسة indexing وتقطيع slicing وربط concatenation ومضاعفة multiplication. عند إجراء عملية إسناد لقطعة من المصفوفة يجب أن تكون القيمة المسندة كائن array يحمل نفس رمز النوع، وإلا فإنّ اللغة تطلق الخطأ <code>TypeError</code>. تستخدم كائنات <code>array</code> كذلك واجهة buffer، ويمكن استخدامها في أي مكان تكون فيه الكائنات الشبيهة بالبايتات مدعومة. | تدعم كائنات <code>array</code> عمليات التسلسلات الاعتيادية من فهرسة indexing وتقطيع slicing وربط concatenation ومضاعفة multiplication. عند إجراء عملية إسناد لقطعة من المصفوفة يجب أن تكون القيمة المسندة كائن <code>array</code> يحمل نفس رمز النوع، وإلا فإنّ اللغة تطلق الخطأ <code>TypeError</code>. تستخدم كائنات <code>array</code> كذلك واجهة buffer، ويمكن استخدامها في أي مكان تكون فيه الكائنات الشبيهة بالبايتات مدعومة. | ||
عند طباعة كائن <code>array</code> أو تحويل إلى [[Python/bytes|سلسلة نصية]]، فإنّه يمثّل بالهيئة <code>array(typecode, initializer)</code>. ويحذف <code>initializer</code> إن كانت المصفوفة فارغة، وإلا فإنّه يكون [[Python/str|سلسلة نصية]] إن كان رمز النوع هو <code>'u'</code>، وفيما عدا ذلك يكون [[Python/built-in exceptions|قائمة]] من الأرقام. | |||
يمكن ضمان إعادة تحويل [[Python/str|السلسلة النصية]] إلى مصفوفة من النوع والقيمة ذاتها باستخدام الدالة <code>[[Python/eval|eval()]]</code> ما دامت صنف المصفوفة مستوردًا باستخدام عبارة <code>from array import array</code>. | |||
يعرض المثال التالي بعض أنواع المصفوفات:<syntaxhighlight lang="python3"> | |||
array('l') | |||
array('u', 'hello \u2641') | |||
array('l', [1, 2, 3, 4, 5]) | |||
array('d', [1.0, 2.0, 3.14]) | |||
</syntaxhighlight> | |||
== خصائص كائنات array == | == خصائص كائنات array == | ||
سطر 110: | سطر 124: | ||
=== <code>array.typecode</code> === | === <code>array.typecode</code> === | ||
رمز النوع الذي استخدم لإنشاء المصفوفة. | رمز النوع الذي استخدم لإنشاء المصفوفة.<syntaxhighlight lang="python3"> | ||
>>> import array | |||
>>> a1 = array.array('u', 'Hello World') | |||
>>> a1.typecode | |||
'u' | |||
</syntaxhighlight> | |||
=== <code>array.itemsize</code> === | === <code>array.itemsize</code> === | ||
طول عنصر واحد في المصفوفة بالبايتات في التمثيل الداخلي. | طول عنصر واحد في المصفوفة بالبايتات في التمثيل الداخلي.<syntaxhighlight lang="python3"> | ||
>>> import array | |||
>>> a1 = array.array('u', 'Hello World') | |||
>>> a1.itemsize | |||
4 | |||
</syntaxhighlight> | |||
== توابع كائنات array == | == توابع كائنات array == | ||
سطر 119: | سطر 143: | ||
تقدم كائنات <code>array</code> مجموعة التوابع التالية: | تقدم كائنات <code>array</code> مجموعة التوابع التالية: | ||
=== التابع <code>array.append( | === [[Python/array/append|التابع <code>array.append()</code>]]=== | ||
يضيف التابع عنصرًا جديدًا يحمل القيمة المعطاة إلى نهاية المصفوفة. | يضيف التابع عنصرًا جديدًا يحمل القيمة المعطاة إلى نهاية المصفوفة. | ||
=== التابع <code>array.buffer_info()</code> === | === [[Python/array/buffer_info|التابع <code>array.buffer_info()</code>]]=== | ||
يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في buffer والمستخدمة لاستيعاب محتويات المصفوفة. | يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في buffer والمستخدمة لاستيعاب محتويات المصفوفة. | ||
=== التابع | === [[Python/array/byteswap|التابع <code>array.byteswap()</code>]]=== | ||
يجري هذا التابع عملية تبادل بايتات byteswap لجميع عناصر المصفوفة. | يجري هذا التابع عملية تبادل بايتات byteswap لجميع عناصر المصفوفة. | ||
=== التابع <code>array.count( | === [[Python/array/count|التابع <code>array.count()</code>]]=== | ||
يعيد التابع عدد مرات ظهور القيمة المعطاة في المصفوفة. | يعيد التابع عدد مرات ظهور القيمة المعطاة في المصفوفة. | ||
=== التابع <code>array.extend( | === [[Python/array/extend|التابع <code>array.extend()</code>]]=== | ||
يلحق التابع عناصر كائن التكرار المعطى إلى نهاية المصفوفة. | يلحق التابع عناصر كائن التكرار المعطى إلى نهاية المصفوفة. | ||
=== التابع <code>array.frombytes( | === [[Python/array/frombytes|التابع <code>array.frombytes()</code>]]=== | ||
يلحق التابع عناصر السلسلة النصية المعطاة وذلك بتفسير السلسلة النصية كمصفوفة من قيم الجهاز machine values (كما لو أنّها مقروءة من ملف باستخدام التابع fromfile()). | يلحق التابع عناصر السلسلة النصية المعطاة وذلك بتفسير السلسلة النصية كمصفوفة من قيم الجهاز machine values (كما لو أنّها مقروءة من ملف باستخدام التابع <code>[[Python/array/fromfile|fromfile()]]</code>). | ||
=== التابع <code>array.fromfile( | === [[Python/array/fromfile|التابع <code>array.fromfile()</code>]]=== | ||
يقرأ التابع n من العناصر (كقيم جهاز machine values) من كائن الملف | يقرأ التابع n من العناصر (كقيم جهاز machine values) من كائن الملف المعطى ويلحقها بنهاية المصفوفة. | ||
=== التابع <code>array.fromlist( | === [[Python/array/fromlist|التابع <code>array.fromlist()</code>]]=== | ||
يلحق التابع عناصر القائمة المعطاة بالمصفوفة. | يلحق التابع عناصر القائمة المعطاة بالمصفوفة. | ||
=== التابع <code>array.fromstring()</code> === | === التابع <code>array.fromstring()</code> === | ||
اسم بديل مهمل للتابع frombytes(). | اسم بديل مهمل للتابع <code>[[Python/array/frombytes|frombytes()]]</code>. | ||
=== التابع <code>array.fromunicode( | === [[Python/array/fromunicode|التابع <code>array.fromunicode()</code>]]=== | ||
يوسع التابع المصفوفة بإضافة البيانات من السلسلة النصية المرمّزة بترميز Unicode. | يوسع التابع المصفوفة بإضافة البيانات من السلسلة النصية المرمّزة بترميز Unicode. | ||
=== التابع <code>array.index( | === [[Python/array/index|التابع <code>array.index()</code>]]=== | ||
يعيد التابع موقع أول ظهور للقيمة المعطاة في المصفوفة. | يعيد التابع موقع أول ظهور للقيمة المعطاة في المصفوفة. | ||
=== التابع <code>array.insert( | === [[Python/array/insert|التابع <code>array.insert()</code>]]=== | ||
يدرج التابع عنصرًا جديدًا يحمل القيمة | يدرج التابع عنصرًا جديدًا يحمل القيمة المعطاة في المصفوفة قبل الموقع المحدد. | ||
=== التابع <code>array.pop( | === [[Python/array/pop|التابع <code>array.pop()</code>]]=== | ||
يحذف التابع العنصر في الموقع i من المصفوفة ويعيده. | يحذف التابع العنصر في الموقع i من المصفوفة ويعيده. | ||
=== التابع <code>array.remove( | === [[Python/array/remove|التابع <code>array.remove()</code>]]=== | ||
يحذف التابع أول ظهور للقيمة المعطاة من المصفوفة. | يحذف التابع أول ظهور للقيمة المعطاة من المصفوفة. | ||
=== التابع <code>array.reverse()</code> === | === [[Python/array/reverse|التابع <code>array.reverse()</code>]]=== | ||
يقلب التابع ترتيب العناصر في المصفوفة. | يقلب التابع ترتيب العناصر في المصفوفة. | ||
=== التابع <code>array.tobytes()</code> === | === [[Python/array/tobytes|التابع <code>array.tobytes()</code>]]=== | ||
يحول التابع المصفوفة إلى مصفوفة من قيم الجهاز. | يحول التابع المصفوفة إلى مصفوفة من قيم الجهاز. | ||
=== التابع <code>array.tofile( | === [[Python/array/tofile|التابع <code>array.tofile()</code>]]=== | ||
يكتب التابع جميع العناصر (كقيم جهاز) في كائن الملف | يكتب التابع جميع العناصر (كقيم جهاز) في كائن الملف المعطى. | ||
=== التابع <code>array.tolist()</code> === | === [[Python/array/tolist|التابع <code>array.tolist()</code>]]=== | ||
يحول التابع المصفوفة إلى قائمة عادية تتضمن نفس العناصر. | يحول التابع المصفوفة إلى قائمة عادية تتضمن نفس العناصر. | ||
=== التابع <code>array.tostring()</code> === | === التابع <code>array.tostring()</code> === | ||
الاسم البديل المهمل للتابع tobytes(). | الاسم البديل المهمل للتابع <code>[[Python/array/tobytes|tobytes()]]</code>. | ||
=== التابع <code>array.tounicode()</code> === | === [[Python/array/tounicode|التابع <code>array.tounicode()</code>]]=== | ||
يحول التابع المصفوفة إلى سلسلة نصية بترميز Unicode. | يحول التابع المصفوفة إلى سلسلة نصية بترميز Unicode. | ||
== انظر أيضًا == | == انظر أيضًا == | ||
* [[Python/list|القوائم في بايثون.]] | * [[Python/list|القوائم في بايثون.]] |
المراجعة الحالية بتاريخ 13:32، 23 أغسطس 2018
تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصحيحة والأعداد ذات الفاصلة العائمة بشكل مضغوط. تعد المصفوفات نوعًا من أنواع التسلسلات وتشبه القوائم في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة.
أنواع الكائنات التي يمكن تخزينها في المصفوفات
يجب تحديد نوع الكائنات عند إنشاء المصفوفة وذلك باستخدام رمز النوع وهو عبارة عن حرف واحد فقط.
يبين الجدول التالي رموز الأنواع المتاحة:
رمز النوع | النوع في لغة 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 |
ملاحظات:
- يمثّل النوع
'u'
حرف يونيكود الخاص المهمل في بايثون. وقد يكون حجمه 16 بت أو 32 بت وذلك حسب المنصّة التي تعمل فيها اللغة. سيحذف الرمز'u'
مع بقية الواجهة البرمجيةPy_UNICODE
. هذا الرمز أصبح مهملًا منذ الإصدار 3.3 من اللغة، وسيحذف في الإصدار 4.0 منها. - الرمزان
'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.