![]() |
Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة |
🚀 الهياكل المتقدمة للبيانات في بايثون: دليل عملي للمطورين المحترفين
الهياكل المتقدمة للبيانات تُعد خطوة أساسية نحو كتابة برامج أكثر كفاءة وتنظيمًا. في هذا المقال، سنستعرض أهم الهياكل المتقدمة في Python، مع أمثلة عملية لكل منها لتوضيح كيفية استخدامها في تطبيقات حقيقية. بالإضافة إلى ذلك، سنقدم تمثيلات رسومية بسيطة لكل بنية بيانات لتسهيل الفهم.
قبل البداية احنا شرحنا الاساسيات والجزء الاول من المستوي المتقدم هتلاقيهم في المقالات التالية
- 🧑💻🌟 تعلم لغة البرمجة بايثون: الدليل الشامل للمبتدئين والمحترفين 🌐🐍
- دليل مطور بايثون المحترف | الخطوة الأولى نحو الاحتراف🚀
- رحلة الاحتراف مع بايثون: تقنيات وأدوات المطور المتقدم🚀
1. 🔄 Deque (Double-Ended Queue)
المفهوم:
Deque هي بنية بيانات تتيح إضافة وحذف العناصر من كلا الطرفين بكفاءة.
الاستخدام:
الطابور ذو النهاية المزدوجة (مثل محاكاة قائمة انتظار الطلبات).
تخزين العناصر بطريقة تُسهل الإضافة والحذف السريع.
الشكل العام:
[Front] <-- [عنصر1, عنصر2, عنصر3] --> [Back]
مثال عملي:
from collections import deque# إنشاء Dequequeue = 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# إنشاء Heapheap = []# إضافة عناصر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 = Falseclass Trie:def __init__(self):self.root = TrieNode()def insert(self, word):node = self.rootfor char in word:if char not in node.children:node.children[char] = TrieNode()node = node.children[char]node.is_end_of_word = Truedef search(self, word):node = self.rootfor char in word:if char not in node.children:return Falsenode = node.children[char]return node.is_end_of_word# اختبار Trietrie = Trie()trie.insert("apple")print(trie.search("apple")) # Trueprint(trie.search("app")) # False
4. 🧰 Graph (الرسم البياني)
المفهوم:
الرسوم البيانية تُستخدم لتمثيل الشبكات والعلاقات بين الكيانات.
الاستخدام:
تحليل الشبكات الاجتماعية.
رسم خرائط الطرق.
الشكل العام:
(0)---(1)| |(2)---(3)
مثال عملي:
from collections import defaultdictclass 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])# اختبار Graphg = 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 = 10self.map = [[] for _ in range(self.size)]def _hash(self, key):return hash(key) % self.sizedef 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)returnbucket.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 vreturn None# اختبار HashMaphmap = HashMap()hmap.set("name", "John")hmap.set("age", 30)print(hmap.get("name")) # Johnprint(hmap.get("age")) # 30
الخلاصة
فهم الهياكل المتقدمة في Python يُمكنك من كتابة برامج أكثر كفاءة ومرونة. يمكنك تطبيق هذه المعرفة في المشاريع الكبيرة وتحسين الأداء العام لتطبيقاتك البرمجية. 🌟