TL; DR: Винятки - це ваш друг, і найкращий підхід до питання, як зазначено.
Простіше просити прощення, ніж дозволу (EAFP)
ОП пояснив у коментарі, що для випадку їх використання насправді не було важливо знати, що таке індекс. Як зазначає прийнята відповідь, використання x in somelist- найкраща відповідь, якщо вам все одно.
Але я припускаю , що , як припускає оригінальний питання, що ви дійсно хвилює те , що індекс. У такому випадку я зазначу, що всі інші рішення вимагають сканування списку двічі, що може призвести до великих покарань за продуктивність.
Більше того, як писав у коментарі поважний Реймонд Хеттінгер
Навіть якби у нас був list.find, який повернув -1, вам все одно потрібно було б перевірити, чи i == -1, і вжити певних дій.
Тож я повернусь до припущення у вихідному питанні, що виключень слід уникати. Я припускаю, що винятки - це ваш друг. Їх нічого не лякаєшся, вони неефективні, і насправді з ними потрібно бути знайомими, щоб написати хороший код.
Тому я вважаю, що найкраща відповідь - просто використовувати підхід за винятком:
try:
i = somelist.index(x)
except ValueError:
" мати справу з цим " просто означає робити те, що вам потрібно зробити: встановити для i значення вартового, створити власний виняток, дотримуватися іншої гілки коду тощо.
Це приклад того, чому принцип Python Легше просити прощення, ніж дозвіл (EAFP) має сенс, на відміну від стилю if-then-else у Look before you jump (LBYL)