مصفوفة بايثون مقابل القائمة: الاختلافات وحالات الاستخدام
نشرت: 2021-11-03اكتسبت Python اليد العليا على اللغات الأخرى في علوم البيانات على مدار السنوات الماضية ، وتلعب هياكل البيانات الخاصة بها دورًا حيويًا. تمتلك Python مجموعة كبيرة من هياكل البيانات ، من بينها المصفوفة والقائمة الأكثر شيوعًا التي سنناقشها اليوم.
المصفوفات والقوائم هما هيكلان بارزان للبيانات في Python متشابهان في العديد من الجوانب. يمكن استخدام كلاهما لتخزين البيانات وتمكيننا من تكرارها وتقسيمها وحتى الوصول إلى عناصرها باستخدام طريقة الفهرسة. ثم ما هو الفرق بين القائمة والمصفوفة في بايثون؟ حسنًا ، هذا ما سنناقشه في هذا المقال.
جدول المحتويات
المصفوفات في بايثون
المصفوفة هي بنية بيانات متجاورة تحتوي على عناصر متجانسة ، أي العناصر التي تنتمي إلى نفس نوع البيانات.
فيما يلي الخصائص الرئيسية التي تعرضها المصفوفات في بايثون:
- تسمح الطبيعة المتجاورة للمصفوفة بتخزين البيانات في مواقع الذاكرة المجاورة. هذا يجعل من السهل إجراء العمليات على عناصر المصفوفة.
- يمكن التصريح عن مصفوفة في بايثون بطريقتين:
- باستخدام وحدة الصفيف
استيراد المصفوفة # استيراد وحدة "المصفوفة"
myArray = array.array ('i'، [10، 20، 30]) # تعريف مصفوفة
# مصفوفة تم إنشاؤها: [10، 20، 30]
ملاحظة: في الإعلان أعلاه ، من الضروري تحديد كود التنسيق. هنا ، "i" هو رمز تنسيق يرمز إلى عدد صحيح.
- باستخدام وحدة NumPy
import numpy # استيراد الوحدة "numpy"
myArray = numpy.array ([10، 20، 30]) # تعريف مصفوفة
# مصفوفة تم إنشاؤها: [10، 20، 30]
- يتم ترتيب عناصر المصفوفة . كل عنصر له فهرس عدد صحيح مرتبط. على سبيل المثال ، في arr [10 ، 20 ، 30] ، '10' ، '20' ، و '30' مخزنة في الفهارس 0 و 1 و 2 على التوالي في الذاكرة.
ملاحظة: تبدأ فهرسة المصفوفة في بايثون من الصفر.
- يمكن أن تحتوي المصفوفة فقط على قيم من نفس النوع ، أي عناصر متجانسة . علي سبيل المثال،
arr [1، 2، 3]
arr ['a'، 'b'، 'c']
تُستخدم المصفوفة في Python عمومًا لتخزين قائمة بالعناصر المتشابهة. يمكن أن تكون إحدى حالات الاستخدام الواقعية للشاشة هي تخزين أسعار الأسهم لسهم معين لمجموعة من الأيام. يظل سعر إغلاق السهم سليما بالنسبة لسهم معين ويوم معين. هذا يعني أن تخزين مثل هذه التفاصيل في بنية بيانات غير قابلة للتغيير مثل المصفوفة يكون أكثر منطقية.
في الواقع ، تُستخدم مصفوفات NumPy عمومًا لتخزين البيانات من مجموعات البيانات الكبيرة في علم البيانات والتعلم الآلي. يتوافق كل مصفوفة NumPy مع معلم في مجموعة بيانات.
القوائم في بايثون
القائمة هي واحدة من أربع حاويات أو هياكل بيانات مدمجة مدعومة في Python. تتمثل إحدى المزايا الرئيسية لاستخدام القوائم في أن القائمة الواحدة يمكن أن تحتوي على قيم لأنواع بيانات متعددة.
فيما يلي الخصائص الرئيسية التي تعرضها القوائم في بايثون:
- القوائم أكثر مرونة من حيث تخزين البيانات. يمكن أن تحتوي على بيانات غير متجانسة ، أي عناصر من أنواع مختلفة. علي سبيل المثال،
[1، 'hello'، ['x'، 'y']]
- يتم ترتيب القوائم أيضًا ، ويمكن الوصول إلى العناصر المخزنة في قائمة باستخدام فهارسها. يمكن استخدام المؤشرات السلبية للوصول إلى عنصر من نهاية القائمة. علي سبيل المثال.،
myList = [20، 40، 'hello'، 'world']
# طباعة العنصر الثاني الأخير
طباعة (myList [-2])
انتاج |
- يمكن تغيير القوائم بسهولة بعد تهيئة القائمة. لتعديل أي قيمة ، قم بالوصول إليها باستخدام فهرس العنصر.
سيارات = ['Ford'، 'Tesla'، 'Jaguar']
سيارات [2] = "BMW"
- يمكن أيضًا تنفيذ القوائم متعددة الأبعاد في Python باستخدام مفهوم القوائم المتداخلة. يمكن استخدام هذه القوائم متعددة الأبعاد كمصفوفات متعددة الأبعاد في بايثون.
myArr = [[1، 2]، [3، 4]]
# إنشاء مصفوفة ثنائية الأبعاد:
# | 1 ، 2 |
# | 3 ، 4 |
يمكن أن تتمثل حالة الاستخدام الواقعية لقائمة غير متجانسة متعددة الأبعاد في Python في تخزين مجموعة من تفاصيل المنتج مثل نوع المنتج والفئة وسعر التكلفة وسعر البيع وما إلى ذلك. تمثل كل قائمة في هذه القائمة متعددة الأبعاد منتج. نظرًا لأن القوائم قابلة للتغيير ، يصبح من الأسهل تغيير تفاصيل المنتج وقتما نريد.
إذا كنت مطورًا طموحًا في Python ، فإن تغطية الاختلافات الأساسية بين المصفوفة والقائمة في Python يعد جانبًا رئيسيًا. لذلك ، دون مزيد من اللغط ، دعنا نقفز مباشرة إلى وصف جدولي في Python Array vs. List.
اعرف الفرق بين Array و List في بايثون
Python Array vs List : من الفائز؟
معامل | قائمة | مجموعة مصفوفة |
إعلان | لا يلزم التصريح عن القوائم لأنها مضمنة في Python. القائمة = [ 10 ، 20 ، 30 ] | تحتاج إلى استيراد وحدة مصفوفة أو مكتبة NumPy للإعلان عن مصفوفة. my_arr_1 = array.array ( 'i' ، [ 10 ، 20 ، 30 ]) |
نوع البيانات | يمكن أن تحتوي قائمة واحدة على قيم تنتمي إلى أنواع بيانات مختلفة. myList = [ 40 ، 'hi there' ، 'm' ] | يجب أن تكون جميع عناصر المصفوفة من نفس نوع البيانات. myArr = arr.array (i، [ 1 ، 0 ، 9]) |
بحجم | يمكن تغيير حجم قائمة Python حيث أنه أثناء تهيئة القائمة ، يقوم Python بتهيئة بعض العناصر الإضافية. | المصفوفات لها حجم ثابت لا يمكن تغييره. |
الفراغ/ ذاكرة | يستهلك مساحة وذاكرة أكبر لإضافة العناصر أو إزالتها. | يخزن البيانات بطريقة أكثر إحكاما. |
مخزن البيانات | يفضل تخزين كمية صغيرة من البيانات. | يفضل تخزين كمية كبيرة من البيانات |
عمليات رياضية | لا يمكن استخدامها للعمليات الحسابية مباشرة. | يمكن معالجة عناصر المصفوفة بسهولة باستخدام عمليات حسابية متقدمة. |
عرض البيانات | يمكن عرض عناصر القائمة بدون تكرار my_List = [ 1 ، "Dennis" ، [ 'a' ، 'b' ]] طباعة (my_List) | يجب أن تكون حلقة التكرار مطلوبة حتى يتم عرض عناصر المصفوفة. مجموعة الاستيراد my_Arr = array.array ( 'i' ، [ 1 ، 2 ، 3 ]) لأني في my_Arr: طباعة (أنا) |
Python Array vs List : من الفائز؟
إذا كنت تقرأ هذا القسم ، فهذا يعني أنك الآن على دراية تامة بالفرق بين القائمة والمصفوفة في بايثون. ومع ذلك ، يجب أن تكون على دراية أيضًا بموعد استخدام Array أو List في برنامجك.
يناقش هذا القسم الظروف المختلفة التي يتعين عليك فيها اختيار أنسب بنية بيانات من بين هذين النوعين.
نوع العناصر
إذا لم يتم تحديد نوع البيانات مسبقًا ، فهناك مجموعة من البيانات تنتمي إلى أنواع متعددة. على سبيل المثال ، لتخزين سجل الطلاب الذين لديهم كيانات مثل الاسم (سلسلة) والمعرف (عدد صحيح) والعلامات (عائم) ، فإن القائمة هي الخيار المفضل.
إذا كانت البيانات المراد تخزينها تنتمي إلى نفس نوع البيانات ، فيمكن هنا تفضيل مصفوفة أو قائمة . سيعتمد الاختيار بعد ذلك على معلمات أخرى مثل حجم البيانات والعمليات التي سيتم تنفيذها والاستخدام.
استهلاك الذاكرة
يزيد استهلاك الذاكرة في القوائم حيث يتم تخصيص بعض المساحة الإضافية أثناء تهيئة القائمة. إذا كان جمع البيانات أصغر نسبيًا ، فإن القائمة تعد خيارًا فعالًا هنا.
مصدر الصورة: webcourses @ UCF
المصفوفات مناسبة لتخزين كميات كبيرة من البيانات ، حيث أن استهلاك ذاكرة المصفوفات أكثر كفاءة من القوائم.
مصدر الصورة: webcourses @ UCF
العمليات المدعومة
إذا كانت بياناتك لا تتطلب أي عمليات حسابية ، فيمكن أن تكون القائمة خيارًا أفضل ، لأنها تدعم وظائف مضمنة أفضل لمعالجة البيانات.
من ناحية أخرى ، يجب استخدام المصفوفات عند الحاجة إلى إجراء عمليات حسابية. تدعم وحدة NumPy العديد من العمليات الحسابية المتقدمة ، بما في ذلك علم المثلثات والعمليات اللوغاريتمية.
الوحدة المراد استيرادها
يمكن الإعلان عن قائمة دون استيراد أي وحدة أو مكتبة. يمكن تعريفه تمامًا مثل المتغير المعتاد لأنه بنية بيانات مضمنة في Python.
ومع ذلك ، فإن المصفوفة ليست واحدة من الحاويات الافتراضية لبايثون. هناك نوعان من الوحدات النمطية الأكثر شيوعًا - المصفوفة و NumPy . تأتي كل وحدة مع بعض الوظائف المحددة مسبقًا لمعالجة وإدارة البيانات المخزنة في المصفوفة.
خاتمة
غطت هذه المقالة جميع الموضوعات المطلوبة لمنحك فهمًا ثاقبًا للاختلاف بين المصفوفة والقائمة في بايثون. ناقشنا أيضًا حالات الاستخدام المختلفة حيث تكون القائمة أو المصفوفة مناسبة.
إذا كنت ترغب في بدء رحلتك في علوم البيانات ، فقم بالتسجيل في upGrad's Data Science بالطبع اليوم. تحقق من المجموعة الواسعة من الدورات التدريبية في upGrad لبدء حياتك المهنية.
تُفضل مصفوفة Python على قائمة في سيناريوهات مختلفة: تكون المصفوفة أسرع من قائمة في Python نظرًا لأن جميع العناصر المخزنة في المصفوفة متجانسة ، أي أن لها نفس نوع البيانات بينما تحتوي القائمة على عناصر غير متجانسة. قائمة Python لها أهمية كبيرة في تخزين البيانات ويمكن استخدامها في حالات متعددة:متى تستخدم مصفوفة فوق قائمة في بايثون؟
1. نظرًا لأن المصفوفة في Python أكثر إحكاما وتستهلك ذاكرة أقل من القائمة ، فمن المفضل استخدام مصفوفة عندما يلزم تخزين كمية كبيرة من البيانات.
2. ليس من الضروري استخدام قائمة لتخزين البيانات عندما تكون جميع العناصر من نفس نوع البيانات ، وبالتالي فإن المصفوفة ستكون أكثر كفاءة هنا.
3. البيانات المخزنة في مصفوفة يمكن معالجتها رياضياً بسهولة في حين أن هذا غير ملائم إلى حد كبير مع القائمة. أيهما أسرع بين المصفوفة والقائمة في بايثون؟
علاوة على ذلك ، يتم تنفيذ مصفوفات Python في لغة C مما يجعلها أسرع بكثير من القوائم المضمنة في Python نفسها. متى تكون القائمة أكثر ملاءمة لتخزين البيانات في بايثون؟
1. عندما يكون لديك عناصر مختلفة لأنواع بيانات مختلفة ، يمكنك تخزينها في قائمة ويمكنك الوصول إلى هذه العناصر بمجرد الرجوع إلى فهارسها.
2. يمكن أيضًا تغيير حجم القائمة. ومن ثم ، تكون القائمة مفيدة عندما لا تكون متأكدًا من عدد العناصر.
3. تكون القوائم مفضلة للغاية عند الحاجة إلى تخزين كمية صغيرة من البيانات نظرًا لأن الوظائف المضمنة في القائمة ملائمة تمامًا لمعالجة البيانات.