تقنية

insort_left في بايثون: هل يدرج المفتاح بدل السجل؟

مفتاح الجديد 6
مفتاح البحث. [1] [2] [3]

المقارنة بالمفتاح لا تختزل السجل المدرج. [1] [2] [3]

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

لا؛ يدرج insort_left السجل نفسه، لا مفتاحه. [1] [2] [3]

  • القائمة مرتبة بالمفتاح العددي 2 ثم 8. [1] [2] [3]
  • نمرر السجل الجديد كاملًا: ('dock',6). [1] [2] [3]
  • يستعمل key مع الجديد للبحث عن الموضع. [1] [2] [3]
  • تصير القائمة ثلاثة سجلات؛ الجديد في الموضع 1. [1] [2] [3]
  • القيمة المعادة None؛ اختبرنا 3.12.14. [1] [2] [3]

المثال

from bisect import insort_left
rows=[('bud',2),('leaf',8)]
new=('dock',6)
print(insort_left(rows,new,key=lambda r:r[1]))
print(rows)

[1] [2] [3]

المقارنة والإدراج

المصدر هنا يطبق المفتاح على الجديد للبحث، ثم يمرر السجل الأصلي إلى الإدراج. المخرجان None ثم [('bud',2),('dock',6),('leaf',8)]. تغيرت القائمة نفسها؛ لم نستبدلها بقيمة معادة. [1] [2] [3]

السجل الكامل في القائمة
قيمة الإدراج. [1] [2] [3]

شرط الترتيب

ابدأ بقائمة مرتبة بحسب المفتاح. العملية تحفظ هذا الترتيب؛ ليست فرزًا كاملًا لقائمة غير مرتبة. المفتاح هنا دالة تقرأ الحقل الثاني، ولا تعدل السجلات. [1] [2] [3]

المراجع

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

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

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