Apakah ada fungsi perpustakaan yang melakukan pencarian biner pada daftar / tuple dan mengembalikan posisi item jika ditemukan dan 'Salah' (-1, Tidak ada, dll.) Jika tidak?
Saya menemukan fungsi bisect_left / right di modul bisect , tetapi mereka tetap mengembalikan posisi walaupun item tersebut tidak ada dalam daftar. Itu sangat baik untuk penggunaan yang dimaksudkan, tetapi saya hanya ingin tahu apakah suatu item ada dalam daftar atau tidak (tidak ingin memasukkan apa pun).
Saya berpikir untuk menggunakan bisect_left
dan kemudian memeriksa apakah item pada posisi itu sama dengan apa yang saya cari, tetapi tampaknya rumit (dan saya juga perlu melakukan pengecekan batas jika jumlahnya bisa lebih besar dari jumlah terbesar dalam daftar saya). Jika ada metode yang lebih baik saya ingin tahu tentang itu.
Sunting Untuk mengklarifikasi untuk apa saya memerlukan ini: Saya sadar bahwa kamus akan sangat cocok untuk ini, tetapi saya mencoba untuk menjaga konsumsi memori serendah mungkin. Penggunaan yang saya maksudkan akan menjadi semacam tabel pencarian dua arah. Saya sudah dalam tabel daftar nilai dan saya harus dapat mengakses nilai-nilai berdasarkan indeks mereka. Dan saya juga ingin dapat menemukan indeks nilai tertentu atau Tidak ada jika nilainya tidak ada dalam daftar.
Menggunakan kamus untuk ini akan menjadi cara tercepat, tetapi akan (kurang-lebih) menggandakan persyaratan memori.
Saya mengajukan pertanyaan ini berpikir bahwa saya mungkin telah mengabaikan sesuatu di perpustakaan Python. Sepertinya saya harus menulis kode sendiri, seperti yang disarankan Moe.
np.searchsorted
bermanfaat. docs.scipy.org/doc/numpy/reference/generated/…