الدالة heapq.heapreplace()‎ في بايثون

من موسوعة حسوب
< Python‏ | heapq
مراجعة 12:45، 6 أغسطس 2018 بواسطة Mohammed Taher (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)


تحذف الدالة وتعيد أصغر عنصر في الكومة، وتضيف كذلك العنصر الجديد المعطى.

البنية العامة

heapq.heapreplace(heap, item)

المعاملات

heap

الكومة التي ستُدرج فيها قيمة المعامل item.

item

القيمة المراد إدراجها في الكومة.

القيمة المعادة

تحذف الدالة وتعيد أصغر عنصر في الكومة heap، وتضيف كذلك العنصر الجديد item.

لا يؤدي استخدام هذه الدالة إلى إحداث تغير في حجم الكومة، وتطلق الدالة الخطأ IndexError في حال كون الكومة فارغة.

تؤدي هذه الدالة عملها بكفاءة أكبر من استدعاء الدالة heappop()‎ متبوعة بالدالة heappush()‎، إلى جانب كونها أكثر ملائمة عند التعامل مع كومة ذات حجم ثابت.

تعيد عمليتا pop و push معًا عنصرًا من الكومة وتستبدلانه بالعنصر item.

يمكن أن تكون القيمة المعادة أكبر من العنصر المضاف، وإن كان هذا أمرًا غير مرغوب به، فيجدر استخدام الدالة heappushpop()‎ عوضًا عن هذه الدالة، حيث تعيد عمليتا push و pop فيها القيمة الأصغر من بين قيمتين، لتترك القيمة الأكبر في الكومة.

أمثلة

يبين المثال التالي آلية عمل التابع:

>>> import heapq
>>> li = [5, 7, 9, 1, 3]
>>> print(list(li))
[5, 7, 9, 1, 3]
>>> heapq.heapreplace(li, 4)
5
>>> print(list(li))
[7, 1, 9, 4, 3]

انظر أيضًا

  • الدالة heappushpop()‎: تضيف الدالة العنصر المعطى إلى الكومة، ثم تحذف وتعيد أصغر عنصر في الكومة.

مصادر

صفحة General calendar-related functions في توثيق بايثون الرسمي.