الفرق بين المراجعتين لصفحة: «Python/array»

من موسوعة حسوب
أنشأ الصفحة ب'تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصح...'
 
لا ملخص تعديل
 
(3 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصحيحة والأعداد ذات الفاصلة العائمة بشكل مضغوط. تعد المصفوفات من نوعًا من أنواع التسلسلات وتشبه القوائم في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة. ويجري تحديد نوع الكائنات عند إنشاء المصفوفة وذلك باستخدام رمز النوع وهو عبارة عن حرف واحد فقط.
تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف و<nowiki/>[[Python/int|الأعداد الصحيحة]] و<nowiki/>[[Python/float|الأعداد ذات الفاصلة العائمة]] بشكل مضغوط. تعد المصفوفات نوعًا من أنواع التسلسلات وتشبه [[Python/list|القوائم]] في عملها على نحو كبير، باستثناء أن أنواع الكائنات التي يمكن تخزينها في المصفوفات محدودة.
 
== أنواع الكائنات التي يمكن تخزينها في المصفوفات ==
يجب تحديد نوع الكائنات عند إنشاء المصفوفة وذلك باستخدام رمز النوع وهو عبارة عن حرف واحد فقط.


يبين الجدول التالي رموز الأنواع المتاحة:
يبين الجدول التالي رموز الأنواع المتاحة:
 
{| class="wikitable"
 
!رمز النوع
 
!النوع في لغة C
!النوع في بايثون
!الحجم الأدنى بالبايتات
!ملاحظات
|-
|<code>'b'</code>
|حرف ذو إشارة
|int
|1
|-
|<code>'B'</code>
|حرف بدون إشارة
|int
|1
|-
|<code>'u'</code>
|Py_UNICODE
|محرف يونيكود
|2
|(1)
|-
|<code>'h'</code>
|عدد من نوع  short ذو إشارة
|int
|2
|-
|<code>'H'</code>
|عدد من نوع  short بدون إشارة
|int
|2
|-
|<code>'i'</code>
|عدد من نوع  int ذو إشارة
|int
|2
|-
|<code>'I'</code>
|عدد من نوع  int بدون إشارة
|int
|2
|-
|<code>'l'</code>
|عدد من نوع  long ذو إشارة
|int
|4
|-
|<code>'L'</code>
|عدد من نوع  short بدون إشارة
|int
|4
|-
|<code>'q'</code>
|عدد من نوع  long long ذو إشارة
|int
|8
|(2)
|-
|<code>'Q'</code>
|عدد من نوع  long long بدون إشارة
|int
|8
|(2)
|-
|<code>'f'</code>
|عدد ذو فاصلة عائمة
|float
|4
|-
|<code>'d'</code>
|عدد من نوع double
|float
|8
|}
'''ملاحظات:'''
'''ملاحظات:'''
1. يمثّل النوع 'u' حرف يونيكود الخاص المهمل في بايثون. وقد يكون حجمه 16 بت أو 32 بت وذلك حسب المنصّة التي تعمل فيها اللغة.
# يمثّل النوع <code>'u'</code> حرف يونيكود الخاص المهمل في بايثون. وقد يكون حجمه 16 بت أو 32 بت وذلك حسب المنصّة التي تعمل فيها اللغة. سيحذف الرمز <code>'u'</code> مع بقية الواجهة البرمجية <code>Py_UNICODE</code>. هذا الرمز أصبح مهملًا منذ الإصدار 3.3 من اللغة، وسيحذف في الإصدار 4.0 منها.
سيحذف الرمز 'u' مع بقية الواجهة البرمجية Py_UNICODE.
# الرمزان <code>'q'</code> و <code>'Q'</code> متوفّران فقط إن كان مصرّف C المستخدم لبناء بايثون يدعم نوع <code>long long</code> في C أو يدعم النوع <code>‎__int64</code> في نظام ويندوز. هذا الرمز جديد في الإصدار 3.3 من بايثون.
هذا الرمز أصبح مهملًا منذ الإصدار 3.3 من اللغة، وسيحذف في الإصدار 4.0 منها.
يُحدّد التمثيل الفعلي للقيم بواسطة معمارية جهاز التشغيل (وبعبارة أدق بواسطة C). ويمكن الوصول إلى الحجم الفعلي عن طريق الخاصية <code>itemsize</code>.
2. الرمزان 'q' و 'Q' متوفّران فقط إن مصرّف C المستخدم لبناء بايثون يدعم نوع long long في C أو يدعم النوع ‎__int64 في نظام ويندوز.
هذا الرمز جديد في الإصدار 3.3 من بايثون.
 
يُحدّد التمثيل الفعلي للقيم بواسطة معمارية جهاز التشغيل (وبعبارة أدق بواسطة C). ويمكن الوصول إلى الحجم الفعلي عن طريق الخاصية itemsize.


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


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


=== array.typecodes ===
=== <code>array.typecodes</code> ===


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


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


== خصائص كائنات array ==
عند طباعة كائن <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>. 


تقدم كائنات array الخصائص التالية:
يعرض المثال التالي بعض أنواع المصفوفات:<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.typecode
== خصائص كائنات array ==


رمز النوع الذي استخدم لإنشاء المصفوفة.
تقدم كائنات <code>array</code> الخصائص التالية:


array.itemsize
=== <code>array.typecode</code> ===
رمز النوع الذي استخدم لإنشاء المصفوفة.<syntaxhighlight lang="python3">
>>> import array
>>> a1 = array.array('u', 'Hello World')
>>> a1.typecode
'u'
</syntaxhighlight>


طول عنصر واحد في المصفوفة بالبايتات في التمثيل الداخلي.
=== <code>array.itemsize</code> ===
طول عنصر واحد في المصفوفة بالبايتات في التمثيل الداخلي.<syntaxhighlight lang="python3">
>>> import array
>>> a1 = array.array('u', 'Hello World')
>>> a1.itemsize
4
</syntaxhighlight>


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


تقدم كائنات array مجموعة التوابع التالية:
تقدم كائنات <code>array</code> مجموعة التوابع التالية:
 
array.append(x)


=== [[Python/array/append|التابع <code>array.append()‎</code>]]===
يضيف التابع عنصرًا جديدًا يحمل القيمة المعطاة إلى نهاية المصفوفة.
يضيف التابع عنصرًا جديدًا يحمل القيمة المعطاة إلى نهاية المصفوفة.


array.buffer_info()
=== [[Python/array/buffer_info|التابع <code>array.buffer_info()‎</code>]]===
 
يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في buffer والمستخدمة لاستيعاب محتويات المصفوفة.
يعيد التابع صفًّا بهيئة (عنوان، طول) يتضمّن الموقع الحالي في الذاكرة والطول بعدد العناصر في buffer والمستخدمة لاستيعاب محتويات المصفوفة.


array.byteswap()
=== [[Python/array/byteswap|التابع <code>array.byteswap()‎</code>]]===
 
يجري هذا التابع عملية تبادل بايتات byteswap لجميع عناصر المصفوفة.
يجري هذا التابع عملية تبادل بايتات byteswap لجميع عناصر المصفوفة.


array.count(x)
=== [[Python/array/count|التابع <code>array.count()‎</code>]]===
 
يعيد التابع عدد مرات ظهور القيمة المعطاة في المصفوفة.
يعيد التابع عدد مرات ظهور القيمة المعطاة في المصفوفة.


array.extend(iterable)
=== [[Python/array/extend|التابع <code>array.extend()‎</code>]]===
 
يلحق التابع عناصر كائن التكرار المعطى إلى نهاية المصفوفة.  
يلحق التابع عناصر كائن التكرار المعطى إلى نهاية المصفوفة.  


array.frombytes(s)
=== [[Python/array/frombytes|التابع <code>array.frombytes()‎</code>]]===
يلحق التابع عناصر السلسلة النصية المعطاة وذلك بتفسير السلسلة النصية كمصفوفة من قيم الجهاز machine values (كما لو أنّها مقروءة من ملف باستخدام التابع <code>[[Python/array/fromfile|fromfile()]]‎</code>).


يلحق التابع عناصر السلسلة النصية المعطاة وذلك بتفسير السلسلة النصية كمصفوفة من قيم الجهاز machine values (كما لو أنّها مقروءة من ملف باستخدام التابع fromfile()‎).
=== [[Python/array/fromfile|التابع <code>array.fromfile()‎</code>]]===
 
يقرأ التابع n من العناصر (كقيم جهاز machine values) من كائن الملف المعطى ويلحقها بنهاية المصفوفة.
array.fromfile(f, n)
 
يقرأ التابع n من العناصر (كقيم جهاز machine values) من كائن الملف f ويلحقها بنهاية المصفوفة.
 
array.fromlist(list)


=== [[Python/array/fromlist|التابع <code>array.fromlist()‎</code>]]===
يلحق التابع عناصر القائمة المعطاة بالمصفوفة.
يلحق التابع عناصر القائمة المعطاة بالمصفوفة.


array.fromstring()
=== التابع <code>array.fromstring()‎</code> ===
 
اسم بديل مهمل للتابع <code>[[Python/array/frombytes|frombytes()‎]]</code>.
اسم بديل مهمل للتابع frombytes()‎.
 
array.fromunicode(s)


=== [[Python/array/fromunicode|التابع <code>array.fromunicode()‎</code>]]===
يوسع التابع المصفوفة بإضافة البيانات من السلسلة النصية المرمّزة بترميز Unicode.  
يوسع التابع المصفوفة بإضافة البيانات من السلسلة النصية المرمّزة بترميز Unicode.  


array.index(x)
=== [[Python/array/index|التابع <code>array.index()‎</code>]]===
يعيد التابع موقع أول ظهور للقيمة المعطاة في المصفوفة.
يعيد التابع موقع أول ظهور للقيمة المعطاة في المصفوفة.


array.insert(i, x)
=== [[Python/array/insert|التابع <code>array.insert()‎</code>]]===
 
يدرج التابع عنصرًا جديدًا يحمل القيمة المعطاة في المصفوفة قبل الموقع المحدد.
يدرج التابع عنصرًا جديدًا يحمل القيمة x في المصفوفة قبل الموقع i.
 
array.pop([i])


=== [[Python/array/pop|التابع <code>array.pop()‎</code>]]===
يحذف التابع العنصر في الموقع i من المصفوفة ويعيده.
يحذف التابع العنصر في الموقع i من المصفوفة ويعيده.


array.remove(x)
=== [[Python/array/remove|التابع <code>array.remove()‎</code>]]===
 
يحذف التابع أول ظهور للقيمة المعطاة من المصفوفة.
يحذف التابع أول ظهور للقيمة المعطاة من المصفوفة.


array.reverse()
=== [[Python/array/reverse|التابع <code>array.reverse()‎</code>]]===
 
يقلب التابع ترتيب العناصر في المصفوفة.
يقلب التابع ترتيب العناصر في المصفوفة.


array.tobytes()
=== [[Python/array/tobytes|التابع <code>array.tobytes()‎</code>]]===
 
يحول التابع المصفوفة إلى مصفوفة من قيم الجهاز.
يحول التابع المصفوفة إلى مصفوفة من قيم الجهاز.


array.tofile(f)
=== [[Python/array/tofile|التابع <code>array.tofile()‎</code>]]===
 
يكتب التابع جميع العناصر (كقيم جهاز) في كائن الملف المعطى.
يكتب التابع جميع العناصر (كقيم جهاز) في كائن الملف f.
 
array.tolist()


=== [[Python/array/tolist|التابع <code>array.tolist()‎</code>]]===
يحول التابع المصفوفة إلى قائمة عادية تتضمن نفس العناصر.
يحول التابع المصفوفة إلى قائمة عادية تتضمن نفس العناصر.


array.tostring()
=== التابع <code>array.tostring()‎</code> ===
 
الاسم البديل المهمل للتابع <code>[[Python/array/tobytes|tobytes()‎]]</code>.
الاسم البديل المهمل للتابع tobytes()‎.
 
array.tounicode()


=== [[Python/array/tounicode|التابع <code>array.tounicode()‎</code>]]===
يحول التابع المصفوفة إلى سلسلة نصية بترميز Unicode.
يحول التابع المصفوفة إلى سلسلة نصية بترميز Unicode.


== انظر أيضًا ==
== انظر أيضًا ==
* [[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  

ملاحظات:

  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.

انظر أيضًا

المصادر