بايثون العرب
10.5K subscribers
866 photos
183 videos
768 links
Download Telegram
✨ تحسين أداء Python: استخدام `collections.deque` 🚀

هل تعاني من بطء عمليات الإضافة والحذف من بداية القوائم في Python؟ اكتشف كيف يمكن لـ `collections.deque` أن يحدث فرقًا كبيرًا!

from collections import deque

# إنشاء deque
d = deque(['a', 'b', 'c'])

# إضافة عنصر إلى البداية (فعال جدًا)
d.appendleft('x')
print(f"بعد appendleft: {d}")

# إضافة عنصر إلى النهاية (فعال جدًا)
d.append('y')
print(f"بعد append: {d}")

# حذف عنصر من البداية (فعال جدًا)
first = d.popleft()
print(f"العنصر المحذوف من البداية: {first}")
print(f"بعد popleft: {d}")

# حذف عنصر من النهاية (فعال جدًا)
last = d.pop()
print(f"العنصر المحذوف من النهاية: {last}")
print(f"بعد pop: {d}")

# مثال على الطوابير (Queues)
queue = deque()
queue.append('task1')
queue.append('task2')
print(f"الطابور الحالي: {queue}")
current_task = queue.popleft()
print(f"تنفيذ المهمة: {current_task}")
print(f"الطابور بعد التنفيذ: {queue}")


القوائم العادية في Python بطيئة عند إضافة أو حذف عناصر من البداية (O(n)). `collections.deque` (اختصار لـ double-ended queue) مصمم خصيصًا لهذه العمليات، حيث يوفر إضافة وحذفًا فعالين من كلا الطرفين (O(1)). هذا يجعله مثاليًا لتطبيقات مثل الطوابير (Queues) والمكدسات (Stacks) وتحسينات الأداء العامة.

['#Python', '#برمجة', '#تطوير', '#نصائح_برمجة', '#PythonTips', '#collections', '#deque', '#أداء']
🚀 تحسين أداء Python: استخدم `collections.deque`!

هل تواجه بطئاً عند إضافة أو إزالة عناصر من بداية قائمة Python؟ الحل بسيط ومدمج في مكتبة `collections`!

from collections import deque

# إنشاء deque
my_deque = deque(['a', 'b', 'c'])

# إضافة عنصر في البداية
my_deque.appendleft('x')
print(my_deque) # Output: deque(['x', 'a', 'b', 'c'])

# إزالة عنصر من البداية
first_element = my_deque.popleft()
print(first_element) # Output: x
print(my_deque) # Output: deque(['a', 'b', 'c'])

# مقارنة مع القائمة العادية (للتوضيح)
my_list = ['a', 'b', 'c']
# إضافة في البداية (أبطأ)
my_list.insert(0, 'x')
# إزالة من البداية (أبطأ)
my_list.pop(0)


تُعد `collections.deque` (قائمة الانتظار المزدوجة) هياكل بيانات محسّنة لعمليات الإضافة والحذف السريعة من كلا الطرفين (البداية والنهاية). على عكس القوائم العادية في Python، حيث تكون عمليات `insert(0, ...)` و `pop(0)` بطيئة (تعقيد زمني O(n)) لأنها تتطلب إعادة ترتيب جميع العناصر، فإن عمليات `appendleft()` و `popleft()` في `deque` تتم بسرعة ثابتة (تعقيد زمني O(1)). هذا يجعلها مثالية للتطبيقات التي تتطلب معالجة متكررة للعناصر من بداية أو نهاية تسلسل.

['#Python', '# البرمجة', '#تطوير', '#كود', '#نصائح_برمجة', '#collections', '#deque']
✨ تحسين أداء Python: استخدام `collections.deque` 🚀

هل تعاني من بطء العمليات على بداية القوائم في Python؟ إليك حل سحري باستخدام `deque`!

from collections import deque

my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)

# إضافة عنصر في البداية (سريع جداً)
my_deque.appendleft(0)

# إزالة عنصر من البداية (سريع جداً)
first_element = my_deque.popleft()

print(my_deque)
print(first_element)


تُعد `collections.deque` (طابور ثنائي الطرف) بنية بيانات مُحسَّنة للإضافة والحذف من كلا الطرفين (البداية والنهاية) بكفاءة عالية (تعقيد زمني O(1)). على عكس القوائم العادية في Python، حيث تكون عمليات الإضافة والحذف في البداية مكلفة (O(n))، توفر `deque` أداءً ممتازًا لهذه العمليات، مما يجعلها مثالية للتعامل مع الطوابير، والمكدسات، وأي سيناريو يتطلب تعديلات متكررة على أطراف التسلسل.

['#Python', '#برمجة', '#تطوير', '#نصائح_برمجية', '#collections', '#deque', '#أداء']
✨ تحسين أداء Python: استخدام `collections.deque` 🚀

هل تعاني من بطء عمليات الإضافة والحذف من بداية أو نهاية القوائم في Python؟ 🤔 تعرف على `deque` من وحدة `collections` وكيف يمكن أن تحدث فرقاً كبيراً!

from collections import deque

my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)

# إضافة عنصر في البداية
my_deque.appendleft(0)
print(f"بعد الإضافة في البداية: {my_deque}")

# إضافة عنصر في النهاية
my_deque.append(6)
print(f"بعد الإضافة في النهاية: {my_deque}")

# حذف عنصر من البداية
first_element = my_deque.popleft()
print(f"العنصر المحذوف من البداية: {first_element}")
print(f"بعد الحذف من البداية: {my_deque}")

# حذف عنصر من النهاية
last_element = my_deque.pop()
print(f"العنصر المحذوف من النهاية: {last_element}")
print(f"بعد الحذف من النهاية: {my_deque}")


الكائن `deque` (double-ended queue) مصمم خصيصاً لعمليات الإضافة والحذف السريعة من كلا الطرفين (البداية والنهاية). على عكس القوائم العادية في Python، حيث تكون عمليات `insert(0, ...)` و `pop(0)` مكلفة (تتطلب إعادة ترتيب العناصر)، فإن `deque` توفر أداءً بزمن ثابت O(1) لهذه العمليات. هذا يجعله مثالياً للحالات التي تحتاج فيها إلى بناء هياكل بيانات مثل قوائم الانتظار أو المكدسات بكفاءة عالية.

['#Python', '#برمجة', '#تطوير', '#علوم_البيانات', '#كود', '#نصائح_برمجية', '#Collections', '#Deque']
❤1
💡 تحسين أداء Python مع `collections.deque` 🚀

هل تبحث عن طريقة أسرع لإضافة أو إزالة عناصر من طرفي قائمة في Python؟ تعرف على `collections.deque` وكيف يمكن أن يحدث فرقًا كبيرًا!

from collections import deque

# إنشاء deque
d = deque(['a', 'b', 'c'])

# إضافة عنصر إلى اليسار
d.appendleft('x')

# إضافة عنصر إلى اليمين
d.append('y')

# إزالة عنصر من اليسار
left_item = d.popleft()

# إزالة عنصر من اليمين
right_item = d.pop()

print(d)
print(f"Element removed from left: {left_item}")
print(f"Element removed from right: {right_item}")


`collections.deque` (double-ended queue) هي بنية بيانات محسّنة لعمليات الإضافة والحذف السريعة من كلا الطرفين (اليسار واليمين). على عكس القوائم العادية، لا تتطلب `deque` إعادة ترتيب العناصر عند الإضافة أو الحذف من البداية، مما يجعلها أسرع بكثير لهذه العمليات.

['#Python', '#برمجة', '#تطوير', '#نصائح_برمجية', '#collections', '#deque', '#Performance']