اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

تلك ليست مصفوفة ثابتة كما  في لغات البرمجة الأخرى، ففي بايثون تسمى قائمة List وهي مصفوفة ديناميكية أي يتغير حجمها.

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

ويوجد ما نستطيع اعتباره قريباً من المصفوفة الثابتة، ولكن ليس بنفس الطريقة التي توجد بها في لغات مثل C أو Java، وذلك من خلال استخدام وحدة تسمى array لتكوين مصفوفات من أنواع بيانات محددة وثابتة.

أي نستطيع تغيير حجمها ولكن النوع ثابت كأعداد صحيحة فقط، لاحظ i تعني الأعداد الصحيحة ونستطيع الإضافة:

import array
fixed_array = array.array('i', [1, 2, 3, 4, 5])

fixed_array.append(6)

والأقرب للمفهوم هو الصفوف tuples فهي هياكل بيانات غير قابلة للتغيير immutable ولا تستطيع تغيير محتواها أو حجمها بعد الإنشاء.

fixed_array = (1, 2, 3, 4, 5)

لكن الصف هيكل بيانات ليس مصممًا خصيصًا للكفاءة الرقمية أو العمليات الحسابية المكثفة مثل array.array أو مكتبة NumPy التي توفر نوع ndarray وهو أقرب إلى المصفوفات في لغات مثل Fortran و MATLAB، حيث الصفوف مصممة أكثر لتمثيل مجموعات ثابتة من البيانات، بغض النظر عن نوعها.

  • 0
نشر

في لغة بايثون القائمة المعرفة كالتالي:

array = [1, 2, 3, 4, 5]

ليست مصفوفة ثابتة بل هي مصفوفة ديناميكية مما يعني أنه بعد إنشاء القائمة يمكنك إضافة أو إزالة أو تعديل عناصرها دون الحاجة لتحديد حجم ثابت مسبقا على سبيل المثال يمكنك إضافة عنصر باستخدام array.append(6) فتصبح القائمة:

array = [1, 2, 3, 4, 5, 6]

أو إزالة عنصر باستخدام array.pop().

وفي لغات أخرى مثل C أو Java تكون المصفوفات الثابتة ذات حجم محدد عند إنشائها ولا يمكن تغييره دون إنشاء مصفوفة جديدة على سبيل المثال في لغة C يمكنك تعريف مصفوفة كالتالي: int array[5]، حيث لا يمكن تغيير حجمها لاحقا.

لا تحتوي بايثون على نوع مدمج للمصفوفة الثابتة، إذ أن القوائم مصممة لتكون أكثر مرونة وإذا كنت بحاجة إلى تسلسل غير قابل للتعديل من العناصر، يمكنك استخدام ال tuple، والذي يتم تعريفه بالشكل التالي:

tuple_array = (1, 2, 3, 4, 5)

لاحظ استخدمنا الأقواس ( ) بدلا من [ ]. 

  • 0
نشر

لا هذا ليس Static Array بالمعنى التقليدي مثل الموجود في C أو Java، بل هي ديناميكية و الفرق بينهما هو أن Static Array حجمها ثابت ولا يمكن تغييره بعد الإنشاء، كما يتم تخصيص الذاكرة لها مسبقا، بينما Dynamic Array يمكن تعديل حجمها أي إضافة وحذف عناصر بحرية، و يتم إعادة تخصيص الذاكرة عند الحاجة.

بالنسبة ل list في بايثون هي مصفوفة ديناميكية، مما يعني أنها تبدأ بحجم معين، وإذا أضفت المزيد من العناصر، يتم إعادة تخصيص ذاكرة أكبر ونقل البيانات إلى موقع جديد، و هذا يشبه ArrayList في Java.

أما إذا أردت مصفوفة ثابتة في بايثون يمكنك استخدام المصفوفات من مكتبة array:

import array 
arr = array.array('i', [1, 2, 3, 4, 5])

أو يمكنك استخدام numpy لمصفوفات أكثر كفاءة، ولكن حتى في numpy، إذا أردت حجمًا ثابتا، عليك تجنب resize أو append.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

في بايثون لا يوجد قوائم ثابته فالمصفوفة التي أرفقتها لا تعتبر "Static Array" مثل باقي اللغات الأخرى كما في c و c++ .

حيث في بايثون النوع الذي نستخدمه هنا هو قائمة (List) وهي عبارة عن هيكل بيانات ديناميكي أى أنه يمكن تعديل حجمها بسهولة إضافة أو حذف عناصر دون الحاجة إلى تحديد حجمها في بداية الكود . وبالتالي هي ليست ثابتة (static) في الذاكرة أو في الحجم مما يمكنك من إضافة أو إزالة عناصر منها بعد إنشائها.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...