Có chức năng thư viện nào thực hiện tìm kiếm nhị phân trong danh sách / tuple và trả về vị trí của mục nếu tìm thấy và 'Sai' (-1, Không, v.v.) nếu không?
Tôi đã tìm thấy các hàm bisect_left / right trong mô-đun bisect , nhưng chúng vẫn trả về một vị trí ngay cả khi mục không có trong danh sách. Điều đó hoàn toàn tốt cho mục đích sử dụng của họ, nhưng tôi chỉ muốn biết liệu một mục có trong danh sách hay không (không muốn chèn bất cứ điều gì).
Tôi đã nghĩ đến việc sử dụng bisect_left
và sau đó kiểm tra xem mục ở vị trí đó có bằng với những gì tôi đang tìm kiếm hay không, nhưng điều đó có vẻ rườm rà (và tôi cũng cần kiểm tra giới hạn nếu số đó có thể lớn hơn số lớn nhất trong danh sách của tôi không). Nếu có một phương pháp đẹp hơn tôi muốn biết về nó.
Chỉnh sửa Để làm rõ những gì tôi cần điều này: Tôi biết rằng một từ điển sẽ rất phù hợp cho việc này, nhưng tôi đang cố gắng giữ mức tiêu thụ bộ nhớ càng thấp càng tốt. Mục đích sử dụng của tôi sẽ là một loại bảng tra cứu hai chiều. Tôi có trong bảng một danh sách các giá trị và tôi cần có thể truy cập các giá trị dựa trên chỉ mục của chúng. Và tôi cũng muốn có thể tìm thấy chỉ mục của một giá trị cụ thể hoặc Không có nếu giá trị không có trong danh sách.
Sử dụng từ điển cho việc này sẽ là cách nhanh nhất, nhưng sẽ (xấp xỉ) gấp đôi yêu cầu bộ nhớ.
Tôi đã hỏi câu hỏi này vì nghĩ rằng tôi có thể đã bỏ qua một cái gì đó trong các thư viện Python. Có vẻ như tôi sẽ phải viết mã của riêng mình, như Moe đề xuất.
np.searchsorted
là hữu ích. docs.scipy.org/doc/numpy/reference/generated/ Kẻ