الفرق بين المراجعتين ل"Python/bisect/bisect left"

من موسوعة حسوب
< Python‏ | bisect
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>bisect.bisect_left()‎</code> في بايثون}}</noinclude> تحدّد الدالة موقع إدراج العنصر ا...')
 
 
سطر 11: سطر 11:
 
== المعاملات ==
 
== المعاملات ==
  
يمكن استخدام المعاملين lo و hi لتحديد جزء من القائمة، ولكن السلوك الافتراضي لهذه الدالة هو التعامل مع القائمة بأكملها. إن كان العنصر x موجودًا من قبل في القائمة فإنّ موقع الإدراج سيكون قبل (إلى يسار) العناصر الموجودة أصلًا. يمكن استخدام القيمة المعادة كأول معامل في التابع list.insert()‎ على افتراض أنّ القائمة a مفروزة أصلًا.
+
يمكن استخدام المعاملين <code>lo</code> و <code>hi</code> لتحديد جزء من القائمة، ولكن السلوك الافتراضي لهذه الدالة هو التعامل مع القائمة بأكملها. إن كان العنصر <code>x</code> موجودًا من قبل في القائمة <code>a</code>، فإنّ موقع الإدراج سيكون قبل (إلى يسار) العناصر الموجودة أصلًا. يمكن استخدام القيمة المعادة كأول معامل في التابع <code>[[Python/list/insert|list.insert()‎]]</code> على افتراض أنّ القائمة <code>a</code> مفروزة أصلًا.
  
 
== القيمة المعادة ==
 
== القيمة المعادة ==
  
يقسم موقع الإدراج المعاد i المصفوفة a إلى نصفين، بحيث يكون التعبير all(val < x for val in a[lo:i])‎ للجانب الأيسر والتعبير all(val >= x for val in a[i:hi])‎.
+
يقسم موقع الإدراج المعاد <code>i</code> المصفوفة <code>a</code> إلى نصفين، بحيث يكون التعبير <code>all(val < x for val in a[lo:i])</code>‎ للجانب الأيسر والتعبير <code>all(val >= x for val in a[i:hi])‎</code>.
  
 
== أمثلة ==
 
== أمثلة ==

المراجعة الحالية بتاريخ 20:00، 5 أغسطس 2018


تحدّد الدالة موقع إدراج العنصر المحدد في المصفوفة المعطاة.

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

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

المعاملات

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

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

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

أمثلة

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

>>> data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)]
>>> data.sort(key=lambda r: r[1])
>>> keys = [r[1] for r in data]         # قائمة من المفاتيح المعدّة مسبقًا
>>> data[bisect_left(keys, 0)]
('black', 0)
>>> data[bisect_left(keys, 1)]
('blue', 1)
>>> data[bisect_left(keys, 5)]
('red', 5)
>>> data[bisect_left(keys, 8)]
('yellow', 8)

انظر أيضًا

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

مصادر

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