هياكل بيانات بايثون الشائعة 1 من 2

هياكل البيانات هي التركيبات الأساسية التي تبني حولها برامجك. توفر كل بنية بيانات طريقة معينة لتنظيم البيانات بحيث يمكن الوصول إليها بكفاءة، اعتمادًا على حالة الاستخدام الخاصة بك. تأتي Python مع مجموعة واسعة من هياكل البيانات في مكتبتها القياسية.

اصطلاح التسمية في python لا يوفر نفس مستوى الوضوح الذي ستجده في اللغات الأخرى. في جافا ، القائمة ليست مجرد قائمة – إنها إما قائمة LinkedList أو ArrayList. ليس الأمر كذلك في بايثون. حتى مطورو Python ذوي الخبرة يتساءلون أحيانًا عما إذا كان نوع القائمة المضمنة يتم تنفيذه كقائمة مرتبطة أو مصفوفة ديناميكية.

اقرأ أفضل 10 مكتبات لعلوم البيانات في بايثون

القواميس والخرائط وجداول التجزئة

في لغة بايثون ، تعتبر القواميس بنية بيانات مركزية. يقوم نظام Dicts بتخزين عدد تعسفي من العناصر ، يتم تحديد كل منها بواسطة مفتاح قاموس فريد.

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

تجعل دفاتر الهاتف نظيرًا واقعيًا لائقًا لأشياء القاموس. تسمح لك باسترداد المعلومات (رقم الهاتف) المرتبطة بمفتاح معين (اسم الشخص) بسرعة. بدلاً من الاضطرار إلى قراءة دليل الهاتف من الأمام إلى الخلف للعثور على رقم شخص ما ، يمكنك الانتقال بشكل مباشر أو أكثر إلى الاسم والبحث عن المعلومات المرتبطة به.

ينقسم هذا القياس إلى حد ما عندما يتعلق الأمر بكيفية تنظيم المعلومات للسماح بعمليات البحث السريعة. لكن خصائص الأداء الأساسية ثابتة. تسمح لك القواميس بالعثور بسرعة على المعلومات المرتبطة بمفتاح معين.

تعد القواميس من أهم هياكل البيانات وأكثرها استخدامًا في علوم الكمبيوتر. إذن ، كيف تتعامل بايثون مع القواميس؟ لنقم بجولة في تطبيقات القاموس المتوفرة في Python الأساسية ومكتبة Python القياسية.

بنى بيانات غير بدائية مدمجة

هياكل بيانات بايثون الشائعة

القوائم (lists)

القوائم – هذه هي بنية البيانات الأكثر تنوعًا في Python وتتم كتابتها كقائمة من العناصر المفصولة بفواصل داخل أقواس مربعة. يمكن أن تتكون القائمة من عناصر غير متجانسة ومتجانسة. بعض الطرق المطبقة في القائمة هي:
 index(), append(), extend(), insert(), remove(), pop()

القوائم قابلة للتغيير. أي أنه يمكن تغيير محتواها مع الحفاظ على الهوية سليمة.

مجموعات (Tuples)

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

قواميس (Dictionaries)

تتكون القواميس من أزواج ذات قيمة رئيسية. يحدد “المفتاح” عنصرًا ، وتخزن “القيمة” قيمة العنصر. تفصل النقطتان المفتاح عن قيمته. يتم فصل العناصر بفواصل ، مع وضع كل شيء داخل أقواس متعرجة. بينما المفاتيح غير قابلة للتغيير (أرقام أو سلاسل أو مجموعات) ، يمكن أن تكون القيم من أي نوع.

مجموعات(sets)

المجموعات هي مجموعة غير مرتبة من العناصر الفريدة. مثل القوائم ، تكون المجموعات قابلة للتغيير وتتم كتابتها بين قوسين مربعين ، ولكن لا يمكن أن تكون قيمتان متماثلتين. تتضمن بعض طرق المجموعة:
count(), index(), any(), all()

المصفوفات مقابل قائمة في بايثون

هياكل بيانات بايثون الشائعة
  • يجب التصريح عن المصفوفات. القوائم لا تفعل ذلك ، لأنها مدمجة في بايثون. في الأمثلة أعلاه ، رأيت أن القوائم يتم إنشاؤها ببساطة من خلال تضمين سلسلة من العناصر في أقواس مربعة. من ناحية أخرى ، يتطلب إنشاء مصفوفة وظيفة محددة من وحدة المصفوفة (على سبيل المثال ، array.array ()) أو حزمة NumPy (على سبيل المثال ، numpy.array ()). لهذا السبب ، يتم استخدام القوائم أكثر من المصفوفات.
  • يمكن للمصفوفات تخزين البيانات بشكل مضغوط للغاية وتكون أكثر كفاءة لتخزين كميات كبيرة من البيانات.
  • المصفوفات رائعة للعمليات العددية ؛ لا يمكن للقوائم معالجة العمليات الحسابية بشكل مباشر. على سبيل المثال، يمكنك قسمة كل عنصر من عناصر المصفوفة على نفس الرقم بسطر واحد فقط من التعليمات البرمجية.
    إذا حاولت الشيء نفسه مع قائمة ، فستتلقى خطأ.
    وإذا كنت بحاجة إلى تخزين سلسلة قصيرة نسبيًا من العناصر ولا تخطط لإجراء أي عمليات حسابية بها ، فإن القائمة هي الخيار المفضل.
    إذا كان لديك تسلسل طويل جدًا من العناصر، ففكر في استخدام مصفوفة.

هياكل البيانات المعرفة من قبل المستخدم في بايثون

الأكوام البيانات (Stacks)

الأكوام – الأكوام عبارة عن هياكل بيانات خطية في بايثون. يعتمد تخزين العناصر في مجموعات Stacks على مبادئ First-In / Last-Out (FILO) أو Last-In / First-Out (LIFO). في Stacks ، تكون إضافة عنصر جديد في أحد الأطراف مصحوبة بإزالة عنصر من نفس الطرف. يتم استخدام عمليات “الدفع” و “فرقعة” لعمليات الإدراج والحذف ، على التوالي

طابور البيانات (queue)

على غرار المكدس(stack) ، تعد طابور(queue) الانتظار هياكل بيانات خطية. ومع ذلك ، يتم تخزين العناصر بناءً على مبدأ الوارد الأول / الأول الذي يخرج (FIFO). في قائمة الانتظار ، تتم إزالة العنصر الذي تمت إضافته مؤخرًا على الأقل أولاً. تشمل العمليات المتعلقة بقائمة الانتظار Enqueue (إضافة عناصر) و Dequeue (حذف العناصر) و Front و Rear. مثل Stacks ، يمكن تنفيذ قوائم الانتظار باستخدام الوحدات النمطية وهياكل البيانات من مكتبة Python – list ، و collections.deque ، و queue.

شجرة البيانات (tree)

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

المصادر

https://en.wikipedia.org/wiki/Data_structure
https://docs.python.org/3/tutorial/datastructures.html
https://learnpython.com/blog/python-array-vslist/#:~:text=Arrays%20can%20store%20data%20very,just%20one%20line%20of%20code.
https://www.upgrad.com/blog/data-structures-algorithm-in-python

منشور ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة