تقنية

bisect_left في بايثون: هل تختبر المساواة؟

طلبان وموضع واحد
الأعداد مرتبة. [1] [2]

الموضع المعاد لا يثبت المساواة. [1] [2]

الخلاصة السريعة

لا؛ تحدد موضع الإدراج باستعمال مقارنة أصغر من. [1] [2]

  • نرتب كائناتنا بالأعداد 2,6,9. [1] [2]
  • طريقة __eq__ المؤلفة ترفع خطأ عند استدعائها. [1] [2]
  • البحث عن 6 وعن 5 يعيد 1 دون ذلك الخطأ. [1] [2]
  • القائمة ثابتة؛ الرقم موضع يبدأ عدّه من صفر. [1] [2]
  • اختبرنا 3.12.14 بمقارنة عددية ثابتة، دون خيوط. [1] [2]

المثال

from bisect import bisect_left
class Mark:
 def __init__(self,n): self.n=n
 def __lt__(self,o): return self.n<o.n
 def __eq__(self,o): raise RuntimeError("eq")
a=[Mark(2),Mark(6),Mark(9)]
print(bisect_left(a,Mark(6)))
print(bisect_left(a,Mark(5)))

[1] [2]

المخرجات 1 ثم 1. [1] [2]

ما الذي قورن؟

المصدر يقارن بأصغر من، دون اختبار مساواة. ربطنا المقارنة بأعداد كائناتنا. نجاح الاستدعاء مع طريقة المساواة الرافضة لا يعني أن الرقم 5 موجود. [1] [2]

مقارنة أصغر من دون مساواة
صنفنا المؤلف. [1] [2]

النطاق

ابدأ بترتيب يوافق المقارنة. لم ندرج كائنًا؛ بقيت الأعداد والهويات كما كانت. قد تغيّر مقارنة مخصصة البيانات؛ لا نضمن الثبات لكل صنف. [1] [2]

المراجع

  1. Python 3.12: bisect
  2. CPython 3.12.14: bisect.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.