Python: .index() и .find() для поиска в коллекции
💾 Методы .index() и .find() делают одно и то же — ищут первое вхождение чего-либо в свою коллекцию. Только .index() применяется к списку и ищет элемент, а .find() работает со строкой и ищет в ней подстроку.
список.index(элемент) строка.find(подстрока)
Вот пример:
s = '12345' x = [1, 2, 3, 4, 5] print(s.find('3'), x.index(3))
Получим 2 и 2, потому что нумерация элементов и в строках, и в списках идёт с нуля.
Но что будет при использовании методов .index() и .find(), если такого элемента или такой подстроки нет?
Например, для строки и списка из примера выше:
s = '12345' x = [1, 2, 3, 4, 5] print(s.find('7')) print(x.index(7))
Метод .find() для отсутствующей строки вернёт -1. Почему не ноль? Потому что нулевая позиция существует.
А вот .index() для отсутствующего элемента сгенерирует ошибку. Проще говоря, программа обругает вас и упадёт, вот так:
ValueError: 7 is not in list
Как же бороться с падением программы при использовании .index()? Запросто! Мы должны сначала проверить, есть ли вообще такое значение в списке. И только убедившись, что есть — определяем его позицию:
x = [1, 2, 3, 4, 5] if 7 in x: print(x.index(7))
Теперь вы точно знаете, как искать элемент в коллекции 👍
0 комментариев