Module này cung cấp hỗ trợ để duy trì danh sách theo thứ tự đã sắp xếp mà không cần sắp xếp lại danh sách sau mỗi lần chèn phần tử mới. Chúng ta sẽ tập trung vào hai hàm: insort_left và insort_right.
insort_left
Hàm này trả về danh sách đã sắp xếp sau khi chèn số vào vị trí cần thiết. Nếu phần tử đã có mặt trong danh sách, phần tử sẽ được chèn ở vị trí trái cùng có thể. Hàm nhận 4 tham số: danh sách cần xử lý, số cần chèn, vị trí bắt đầu, vị trí kết thúc. Giá trị mặc định của vị trí bắt đầu và kết thúc là 0 và độ dài danh sách.
insort_right
Tương tự như insort_left, ngoại trừ phần tử mới được chèn sau các phần tử hiện có đã tồn tại mà không duy trì thứ tự sắp xếp nghiêm ngặt.
Cú pháp
bisect.insort_left(a, x, lo=0, hi=len(a)) bisect.insort_right(a, x, lo=0, hi=len(a)) # a: dãy cho trước, x: số cần chèn
Ví dụ
import bisect
listA = [11, 13, 23, 7, 13, 15]
print("Danh sách cho trước:", listA)
bisect.insort_left(listA, 14)
print("Bisect left:\n", listA)
listB = [11, 13, 23, 7, 13, 15]
print("Danh sách cho trước:", listB)
bisect.insort_right(listB, 14, 0, 4)
print("Bisect right:\n", listB)
Kết quả
Danh sách cho trước: [11, 13, 23, 7, 13, 15] Bisect left: [11, 13, 14, 23, 7, 13, 15] Danh sách cho trước: [11, 13, 23, 7, 13, 15] Bisect right: [11, 13, 14, 23, 7, 13, 15]