bisect
là một mô-đun trong Thư viện chuẩn Python hoàn hảo cho tác vụ này. Hàm bisect
trong mô-đun bisect
sẽ cung cấp cho bạn chỉ mục của điểm chèn cho giá trị.
Để tôi cho một ví dụ mã cho bisect
from bisect import bisect
a = 132
b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]
print(bisect(b, a))
Kết quả sẽ là 5
vì danh sách này là 0-dựa, vì vậy trong thực tế, nó là vị trí thứ 6.
Điều bạn có thể biết là sử dụng kết quả cho số insert
.
index = bisect(b, a)
b.insert(index, a)
hoặc không có các biến trung gian
b.insert(bisect(b, a), a)
Bây giờ b
sẽ [0, 10, 30, 60, 100, 132, 150, 210, 280, 340, 480, 530]
.
'a' sẽ thực sự ở vị trí thứ 6 trong' b', không phải là vị trí thứ 4. Và như @madjar đã lưu ý, sử dụng mô-đun «bisect'. 'bisect.bisect (b, a)' để lấy vị trí (hoặc 'bisect_ [left | right]') và để chèn 'bisect.insort (b, a)' hoặc 'insort [left | right]'. –
http://stackoverflow.com/questions/1109804/does-python-have-a-sorted-list –