الدالة heapq.merge()
في بايثون
تدمج الدالة عدة مدخلات مفروزة في مخرج مفرد مفروز . (على سبيل المثال: دمج عناصر ذات ختم زمني من ملفات تسجيل متعددة).
البنية العامة
heapq.merge(*iterables, key=None, reverse=False)
المعاملات
*iterables
يجب أن تكون جميع المُكرَّرات iterables
مفروزة من الأكبر إلى الأصغر.
key
معامل اختياري يجب تعيينه كمعامل مفتاحي، يحدّد هذا المعامل دالة مفتاحية key function
ذات معامل واحد تستخدم في استخلاص مفتاح مقارنة من كل عنصر في مدخلات الدالة. القيمة الافتراضية لهذا المعامل هي None
وتجرى مقارنة العناصر على نحو مباشر حينئذٍ.
reverse
معامل اختياري يجب تعيينه كمعامل مفتاحي، ويحمل قيمة منطقية. إن أخذ المعامل القيمة True
، فإنّ عناصر المدخلات تُدمج كما لو أنّ كل مقارنة كانت معكوسة. للحصول على سلوك مشابه للدالة sorted(itertools.chain(*iterables), reverse=True)
يجب أن تكون جميع المكرِّرات مفروزة من الأكبر إلى الأصغر.
ملاحظة: أضيف المعاملان الاختياريان key
و reverse
إلى الدالة في الإصدار 3.5 من اللغة.
القيمة المعادة
تعيد الدالة كائن تكرار iterator
يمكن استخدامه للمرور على القيم المفروزة.
هذه الدالة مشابهة للدالة sorted(itertools.chain(*iterables))
ولكنّها تعيد كائن تكرار، ولا تدفع البيانات إلى الذاكرة دفعة واحدة، وتفترض أن كل المدخلات مفروزة أصلًا (من الأصغر إلى الأكبر).
أمثلة
يبين المثال التالي آلية عمل التابع:
>>> import heapq
>>> l1 = [1, 3, 4, 5]
>>> l2 = [3, 5, 7, 9]
>>> l3 = heapq.merge(l1, l2)
>>> print(l3)
>>> print(list(l3))
[1, 3, 3, 4, 5, 5, 7, 9]
>>> l3 = heapq.merge(l1, l2, reverse=True)
>>> print(list(l3))
[3, 5, 7, 9, 1, 3, 4, 5]
انظر أيضًا
- الدالة
nlargest
(): تعيد الدالة قائمة تضمّ العدد المحدّد من أكبر العناصر في مجموعة البيانات dataset المعرّفة بواسطة كائن التكرار المعطى. - الدالة
nsmallest
(): تعيد الدالة قائمة تضمّ العدد المحدّد من أصغر العناصر في مجموعة البيانات dataset المعرّفة بواسطة كائن التكرار المعطى.
مصادر
صفحة General calendar-related functions في توثيق بايثون الرسمي.