Чи є в бібліотеці функція бібліотеки, яка виконує двійковий пошук у списку / кортежі та повертає позицію елемента, якщо вона знайдена, та "Неправильно" (-1, немає тощо), якщо ні?
Я знайшов функції bisect_left / right в модулі bisect , але вони все одно повертають позицію, навіть якщо елемент не є в списку. Це цілком чудово для їх цільового використання, але я просто хочу знати, чи є елемент у списку чи ні (не хочу нічого вставляти).
Я подумав використати, bisect_left
а потім перевірити, чи предмет у цій позиції дорівнює тому, що я шукаю, але це здається громіздким (і мені також потрібно зробити межу перевірки, чи може число бути більшим за найбільшу кількість у моєму списку). Якщо є приємніший метод, я хотів би знати про це.
Редагування Щоб уточнити, для чого мені це потрібно: я знаю, що словник був би дуже підходящий для цього, але я намагаюся максимально знизити споживання пам'яті. Моє передбачуване використання буде своєрідною таблицею подвійного огляду. У таблиці є список значень, і мені потрібно мати можливість отримати доступ до значень на основі їх індексу. А також я хочу мати змогу знайти індекс певного значення або None, якщо значення немає в списку.
Використання словника для цього було б найшвидшим способом, але (приблизно) подвоїть потреби в пам'яті.
Я задавав це питання, думаючи, що, можливо, я щось не помітив у бібліотеках Python. Здається, мені доведеться написати власний код, як запропонував Мо.
np.searchsorted
це корисно. docs.scipy.org/doc/numpy/reference/generated/…