الفرق بين المراجعتين لصفحة: «Python/heapq/merge»

من موسوعة حسوب
< Python‏ | heapq
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>heapq.heapmerge()‎</code> في بايثون}}</noinclude> تدمج الدالة عدة مدخلات مفروزة في م...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>heapq.heapmerge()‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>heapq.heapmerge()‎</code> في بايثون}}</noinclude>


تدمج الدالة عدة مدخلات مفروزة في مخرج مفرد مفروز .
تدمج الدالة عدة مدخلات مفروزة في مخرج مفرد مفروز . (على سبيل المثال: دمج عناصر ذات ختم زمني من ملفات تسجيل متعددة).


== البنية العامة ==
== البنية العامة ==
سطر 11: سطر 11:
== المعاملات ==
== المعاملات ==


تمتلك الدالة معاملين اختياريين يجب تعيينهما كمعاملات مفتاحية.
=== ‎<code>*iterables</code> ===
يجب أن تكون جميع المُكرَّرات <code>iterables</code> مفروزة من الأكبر إلى الأصغر.


=== <code>key</code> ===
=== <code>key</code> ===
يحدّد هذا المعامل دالة مفتاحية key function ذات معامل واحد تستخدم في استخلاص مفتاح مقارنة من كل عنصر في مدخلات الدالة. القيمة الافتراضية لهذا المعامل هي None وتجرى مقارنة العناصر على نحو مباشر حينئذٍ.
معامل اختياري يجب تعيينه كمعامل مفتاحي، يحدّد هذا المعامل دالة مفتاحية <code>key function</code> ذات معامل واحد تستخدم في استخلاص مفتاح مقارنة من كل عنصر في مدخلات الدالة. القيمة الافتراضية لهذا المعامل هي <code>None</code> وتجرى مقارنة العناصر على نحو مباشر حينئذٍ.


=== <code>reverse</code> ===
=== <code>reverse</code> ===
قيمة منطقية. إن أخذ المعامل القيمة True، فإنّ عناصر المدخلات تُدمج كما لو أنّ كل مقارنة كانت معكوسة. للحصول على سلوك مشابه للدالة sorted(itertools.chain(*iterables), reverse=True)‎ يجب أن تكون جميع المُكرَّرات iterables مفروزة من الأكبر إلى الأصغر.
معامل اختياري يجب تعيينه كمعامل مفتاحي، ويحمل قيمة منطقية. إن أخذ المعامل القيمة <code>True</code>، فإنّ عناصر المدخلات تُدمج كما لو أنّ كل مقارنة كانت معكوسة. للحصول على سلوك مشابه للدالة <code>sorted(itertools.chain(*iterables), reverse=True)</code>‎ يجب أن تكون جميع المكرِّرات مفروزة من الأكبر إلى الأصغر.


ملاحظة: أضيف المعاملان الاختياريان key و reverse إلى الدالة في الإصدار 3.5 من اللغة.
ملاحظة: أضيف المعاملان الاختياريان <code>key</code> و <code>reverse</code> إلى الدالة في الإصدار 3.5 من اللغة.


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


تعيد الدالة كائن تكرار iterator يمكن استخدامه للمرور على القيم المفروزة.
تعيد الدالة كائن تكرار <code>iterator</code> يمكن استخدامه للمرور على القيم المفروزة.


هذه الدالة مشابهة للدالة sorted(itertools.chain(*iterables))‎ ولكنّها تعيد كائن تكرار، ولا تدفع البيانات إلى الذاكرة دفعة واحدة، وتفترض أن كل المدخلات مفروزة أصلًا (من الأصغر إلى الأكبر).
هذه الدالة مشابهة للدالة <code>sorted(itertools.chain(*iterables))</code>‎ ولكنّها تعيد كائن تكرار، ولا تدفع البيانات إلى الذاكرة دفعة واحدة، وتفترض أن كل المدخلات مفروزة أصلًا (من الأصغر إلى الأكبر).


== أمثلة ==
== أمثلة ==

مراجعة 12:58، 6 أغسطس 2018


تدمج الدالة عدة مدخلات مفروزة في مخرج مفرد مفروز . (على سبيل المثال: دمج عناصر ذات ختم زمني من ملفات تسجيل متعددة).

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

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
>>> li = [5, 7, 9, 1, 3]
>>> heapq.heapify(li)
>>> print (list(li))
[1, 3, 9, 7, 5]
>>> heapq.heappush(li, 4)
>>> print(list(li))
[1, 3, 4, 7, 5, 9]

انظر أيضًا

  • الدالة nlargest()‎: تعيد الدالة قائمة تضمّ n من أكبر العناصر في مجموعة البيانات dataset المعرّفة بواسطة المكرَّرات.
  • الدالة nsmallest()‎: تعيد الدالة قائمة تضمّ n من أصغر العناصر في مجموعة البيانات dataset المعرّفة بواسطة المكرَّرات.

مصادر

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