خنقتونا خنقتونا
random

آخر الأخبار

random
random
جاري التحميل ...

Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة🚀

 

Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة

🚀 الهياكل المتقدمة للبيانات في بايثون: دليل عملي للمطورين المحترفين

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



قبل البداية احنا شرحنا الاساسيات والجزء الاول من المستوي المتقدم هتلاقيهم في المقالات التالية 

  1. 🧑‍💻🌟 تعلم لغة البرمجة بايثون: الدليل الشامل للمبتدئين والمحترفين 🌐🐍
  2. دليل مطور بايثون المحترف | الخطوة الأولى نحو الاحتراف🚀
  3. رحلة الاحتراف مع بايثون: تقنيات وأدوات المطور المتقدم🚀


1. 🔄 Deque (Double-Ended Queue)

المفهوم:

Deque هي بنية بيانات تتيح إضافة وحذف العناصر من كلا الطرفين بكفاءة.

الاستخدام:

  • الطابور ذو النهاية المزدوجة (مثل محاكاة قائمة انتظار الطلبات).

  • تخزين العناصر بطريقة تُسهل الإضافة والحذف السريع.

الشكل العام:

[Front] <-- [عنصر1, عنصر2, عنصر3] --> [Back]

مثال عملي:

from collections import deque

# إنشاء Deque
queue = deque()

# إضافة عناصر
queue.append('Task 1')
queue.appendleft('Urgent Task')
print(queue)  # deque(['Urgent Task', 'Task 1'])

# حذف عناصر
queue.pop()  # إزالة من النهاية
queue.popleft()  # إزالة من البداية
print(queue)  # deque([])

2. 🧶 Heap (Priority Queue)

المفهوم:

Heap تُستخدم لتنفيذ طابور ذو أولوية حيث يكون العنصر ذو القيمة الأدنى دائمًا في القمة.

الاستخدام:

  • تنفيذ خوارزميات تعتمد على الأولويات (مثل خوارزمية Dijkstra).

الشكل العام:

         [1]
       / \
     [5]   [10]

مثال عملي:

import heapq

# إنشاء Heap
heap = []

# إضافة عناصر
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 10)
print(heap)  # [1, 5, 10]

# إزالة العنصر ذو الأولوية الأعلى
smallest = heapq.heappop(heap)
print(smallest)  # 1

3. 🔐 Trie (Prefix Tree)

المفهوم:

Trie هي شجرة تستخدم لتخزين الكلمات بطريقة تُسهل البحث عنها بكفاءة، خاصة في التطبيقات اللغوية.

الاستخدام:

  • محركات البحث.

  • تصحيح الأخطاء الإملائية.

الشكل العام:


        (Root)
       /  |   \
     'a' 'b'  'c'
     /         \
   'p'         'a'
   /             \
 'p'             't'
 /                 \
'l'               's'

مثال عملي:

class TrieNode:
    def __init__(self):
        self.children = {}
        self.is_end_of_word = False

class Trie:
    def __init__(self):
        self.root = TrieNode()

    def insert(self, word):
        node = self.root
        for char in word:
            if char not in node.children:
                node.children[char] = TrieNode()
            node = node.children[char]
        node.is_end_of_word = True

    def search(self, word):
        node = self.root
        for char in word:
            if char not in node.children:
                return False
            node = node.children[char]
        return node.is_end_of_word

# اختبار Trie
trie = Trie()
trie.insert("apple")
print(trie.search("apple"))  # True
print(trie.search("app"))    # False

4. 🧰 Graph (الرسم البياني)

المفهوم:

الرسوم البيانية تُستخدم لتمثيل الشبكات والعلاقات بين الكيانات.

الاستخدام:

  • تحليل الشبكات الاجتماعية.

  • رسم خرائط الطرق.

الشكل العام:

(0)---(1)

|     |

(2)---(3)

مثال عملي:

from collections import defaultdict

class Graph:
    def __init__(self):
        self.graph = defaultdict(list)

    def add_edge(self, u, v):
        self.graph[u].append(v)

    def bfs(self, start):
        visited = set()
        queue = [start]

        while queue:
            vertex = queue.pop(0)
            if vertex not in visited:
                print(vertex, end=" ")
                visited.add(vertex)
                queue.extend(self.graph[vertex])

# اختبار Graph
g = Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)

g.bfs(2)  # 2 0 3 1

5. 🔬 HashMap with Collision Handling

المفهوم:

HashMap يُستخدم لتخزين القيم بطريقة تُسهل الوصول إليها بسرعة، مع معالجة التصادمات.

الاستخدام:

  • تخزين البيانات مع البحث السريع.

  • التطبيقات التي تتطلب القيم الفريدة.

الشكل العام:

Index: [0] [1] [2] [3] [4]
Data:   []  [] [key:value] [] []

مثال عملي:

class HashMap:
    def __init__(self):
        self.size = 10
        self.map = [[] for _ in range(self.size)]

    def _hash(self, key):
        return hash(key) % self.size

    def set(self, key, value):
        key_hash = self._hash(key)
        bucket = self.map[key_hash]
        for i, (k, v) in enumerate(bucket):
            if k == key:
                bucket[i] = (key, value)
                return
        bucket.append((key, value))

    def get(self, key):
        key_hash = self._hash(key)
        bucket = self.map[key_hash]
        for k, v in bucket:
            if k == key:
                return v
        return None

# اختبار HashMap
hmap = HashMap()
hmap.set("name", "John")
hmap.set("age", 30)
print(hmap.get("name"))  # John
print(hmap.get("age"))   # 30

الخلاصة

فهم الهياكل المتقدمة في Python يُمكنك من كتابة برامج أكثر كفاءة ومرونة. يمكنك تطبيق هذه المعرفة في المشاريع الكبيرة وتحسين الأداء العام لتطبيقاتك البرمجية. 🌟


بالتوفيق ومتنساش تدعي دعوة حلوة لينا وان شاء الله هنحاول علي قد منقدر نظبط المحتوي فيما هوا قادم انتظرونا .. 

عن الكاتب

Mahmoud Salman

التعليقات


اتصل بنا

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

تابع المدونة من هنا

مواقيت الصلاة من هنا

مشاركة مميزة

Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة🚀

  Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة 🚀 الهياكل المتقدمة للبيانات في بايثون: دليل عملي للمطورين المحت...

جميع الحقوق محفوظة

خنقتونا