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

من موسوعة حسوب
< Python‏ | bisect
اذهب إلى التنقل اذهب إلى البحث


تعيد موقع الإدراج الذي يأتي بعد (إلى الجانب الأيمن) العناصر المماثلة للعنصر المضاف في المصفوفة المعطاة.

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

bisect.bisect(a, x, lo=0, hi=len(a))

المعاملات

يمكن استخدام المعاملين lo و hi لتحديد جزء من القائمة، ولكن السلوك الافتراضي لهذه الدالة هو التعامل مع القائمة بأكملها. إن كان العنصر x موجودًا من قبل في القائمة a، فإنّ موقع الإدراج سيكون بعد (إلى يمين) العناصر الموجودة أصلًا. يمكن استخدام القيمة المعادة كأول معامل في التابع list.insert()‎ على افتراض أنّ القائمة a مفروزة أصلًا.

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

يقسم موقع الإدراج المعاد i المصفوفة a إلى نصفين، بحيث يكون التعبير all(val <= x forval in a[lo:i])‎ للجانب الأيسر والتعبير all(val > x for val in a[i:hi])‎.

هذه الدالة مشابهة للدالة bisect_left()‎، ولكنّها تعيد موقع الإدراج الذي يأتي بعد (إلى الجانب الأيمن) العناصر المماثلة للعنصر المضاف x في المصفوفة a.

أمثلة

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

>>> from bisect import bisect
>>> def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'):
...     i = bisect(breakpoints, score)
...     return grades[i]
... 
>>> [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
['F', 'A', 'C', 'C', 'B', 'A', 'A']

انظر أيضًا

  • الدالة bisect_left()‎: تحدّد الدالة موقع إدراج العنصر المحدد في المصفوفة المعطاة.
  • الدالة bisect_right()‎: تعيد موقع الإدراج الذي يأتي بعد (إلى الجانب الأيمن) العناصر المماثلة للعنصر المضاف في المصفوفة المعطاة.

مصادر

صفحة Array bisection algorithm في توثيق بايثون الرسمي.