โมดูลนี้ให้การสนับสนุนในการรักษา List ให้เรียงลำดับโดยไม่ต้องเรียงใหม่ทุกครั้งที่เพิ่มสมาชิกใหม่ เราจะเน้นที่สองฟังก์ชันคือ insort_left และ insort_right
insort_left
ฟังก์ชันนี้คืนค่า List ที่เรียงแล้วหลังจากแทรกตัวเลขในตำแหน่งที่เหมาะสม หากสมาชิกมีอยู่แล้วใน List จะถูกแทรกที่ตำแหน่งซ้ายสุดที่เป็นไปได้ ฟังก์ชันนี้รับอาร์กิวเมนต์ 4 ตัว: List ที่ต้องทำงาน, ตัวเลขที่จะแทรก, ตำแหน่งเริ่มต้นใน List ที่พิจารณา, ตำแหน่งสิ้นสุดที่พิจารณา ค่าเริ่มต้นของตำแหน่งเริ่มและสิ้นสุดคือ 0 และความยาวของ List ตามลำดับ
insort_right
คล้ายกับ insort_left แต่สมาชิกใหม่จะถูกแทรกหลังจากสมาชิกที่มีอยู่แล้ว โดยไม่รักษาลำดับเรียงที่เข้มงวด
ไวยากรณ์ (Syntax)
bisect.insort_left(a, x, lo=0, hi=len(a)) bisect.insort_right(a, x, lo=0, hi=len(a)) a คือลำดับที่กำหนด x คือตัวเลขที่จะแทรก
ตัวอย่าง
ในตัวอย่างด้านล่าง เราใช้ List และนำฟังก์ชัน bisect.insort_left มาใช้ก่อน
import bisect
listA = [11, 13, 23, 7, 13, 15]
print("List ที่กำหนด:", listA)
bisect.insort_left(listA, 14)
print("Bisect left:\n", listA)
listB = [11, 13, 23, 7, 13, 15]
print("List ที่กำหนด:", listB)
bisect.insort_right(listB, 14, 0, 4)
print("Bisect right:\n", listB)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลดังนี้ −
List ที่กำหนด: [11, 13, 23, 7, 13, 15] Bisect left: [11, 13, 23, 7, 13, 14, 15] List ที่กำหนด: [11, 13, 23, 7, 13, 15] Bisect right: [11, 13, 14, 23, 7, 13, 15]