Поиск Индекса в Списке Python: Найти Первое, Последнее или Все Вхождения
В этом руководстве вы научитесь использовать метод index списка Python для нахождения индекса (или индексов) элемента в списке. Метод копирует поведение метода indexOf() во многих других языках, таких как JavaScript. Умение работать со списками Python является важным навыком для Python-разработчика любого уровня. Мы рассмотрим, как найти один элемент, несколько элементов и элементы, соответствующие определенному условию.
К концу этого урока вы узнаете:
Как работает метод Python
list.index()
Как найти индекс одного элемента в списке
Как найти индексы всех элементов в списке
Как найти индексы элементов, соответствующих условию
Как использовать альтернативные методы, такие как понимание списка, чтобы найти индекс элемента в списке.
Оглавление
Объяснение метода индексирования списка Python
Метод list.index()
в Python возвращает индекс указанного элемента в списке. Метод вернет только первый экземпляр этого элемента. Если указанный элемент не присутствует в списке, будет вызвано исключение
Давайте посмотрим на синтаксис метода index()
Давайте подробнее рассмотрим эти параметры:
element=
представляет собой элемент, который нужно искать в спискеstart=
является необязательным параметром, который указывает, с какой позиции начинать поискend=
является необязательным параметром, который указывает, до какой позиции индекса следует выполнять поиск
Метод возвращает индекс данного элемента, если он существует. Имейте в виду, что будет возвращен только первый индекс. Кроме того, если элемент не существует, будет вызвано исключение ValueError
.
В следующем разделе вы узнаете, как использовать метод .index()
Найдите индексную позицию элемента в списке Python
Давайте рассмотрим, как работает метод list.index()
в Python. В этом примере мы будем искать позицию элемента в списке, о которой знаем, что элемент есть в списке.
Давайте представим, что у нас есть список веб-сайтов, которые мы открываем утром, и мы хотим узнать, в какие моменты мы открывали 'bemind'
Мы видим, что слово 'bemind'
находилось на первом месте в списке. Мы видим, что слово 'twitter'
встречается более одного раза в списке. В следующем разделе вы узнаете, как найти каждую позицию элемента в списке.
Поиск всех индексов элемента в списке Python
В предыдущем разделе вы узнали, что метод list.index()
возвращает только первый индекс элемента в списке. Однако во многих случаях вам может потребоваться знать индексные позиции всех элементов в списке, которые соответствуют определенному условию.
К сожалению, Python не предоставляет простого способа для этого. Тем не менее, мы можем использовать невероятно универсальную функцию enumerate()
и цикл for для выполнения этой задачи. Функция enumerate итерирует элементы и возвращает как позицию индекса, так и значение.
Давайте посмотрим, как мы можем найти все позиции индекса элемента в списке, используя цикл for и функцию enumerate():
Давайте разберем, что мы здесь сделали:
Мы определили функцию
find_indices()
, которая принимает два аргумента: список для поиска и элемент, который нужно найти.Функция создает пустой список для сохранения любой найденной позиции индекса.
Функция затем проходит циклом по индексу и элементу в результате функции
enumerate()
Функция оценивает каждый элемент, чтобы определить, равен ли он искомому термину. Если это так, индекс добавляется в список.
Наконец, этот список возвращается
Мы также можем укоротить этот список для получения более компактной версии, используя понимание списка в Python. Давайте посмотрим, как это выглядит:
Одним из преимуществ обеих этих функций является то, что когда элемент не существует в списке, функция просто вернет пустой список, вместо того чтобы вызывать ошибку.
Найдите последнюю индексную позицию элемента в списке Python
В этом разделе вы узнаете, как найти последний индекс элемента в списке. Существует несколько способов подхода к этой задаче. В зависимости от размера вашего списка, вы можете выбрать один способ вместо другого.
Для маленьких списков давайте использовать этот более простой подход:
В этом подходе функция вычитает следующие значения:
len(search_list)
возвращает длину списка1
, поскольку индексы начинаются с0
.index()
инвертированного списка
Есть две основные проблемы с этим подходом:
Если элемент не существует, будет вызвано исключение
ValueError
Функция создаёт копию списка. Для небольших списков это может быть приемлемо, но для больших списков такой подход может потребовать значительных вычислительных ресурсов.
Рассмотрим другой подход, при котором цикл обрабатывает список в обратном порядке. Это избавляет от необходимости дублировать список.
В приведенном выше примере мы проходим по списку в обратном порядке, начиная с последнего индекса. Затем мы проверяем, равен ли данный элемент искомому значению. Если это так, мы возвращаем позицию индекса, и цикл завершается. В противном случае мы уменьшаем значение на 1 с помощью оператора присваивания с уменьшением.
Индекс элемента, отсутствующего в списке Python
По умолчанию метод list.index()
в Python выдаст ошибку ValueError
, если элемент не присутствует в списке. Давайте посмотрим, как это выглядит. Мы попробуем найти термин 'pinterest'
в нашем списке:
Когда Python выдает эту ошибку, вся программа останавливается. Мы можем обойти это, вложив ее в блок try-except.
Работа с параметрами метода индекса списка
Метод list.index()
в Python также предоставляет два дополнительных параметра: start=
и stop=
. Эти параметры соответственно указывают позиции, с которых начинается и заканчивается поиск.
Допустим, мы хотели бы начать поиск со второго индекса и закончить на шестом, мы могли бы написать:
Путем указания метода начать с индекса 2
, метод пропускает первое вхождение строки 'twitter'
.
Поиск всех индексов элементов, соответствующих условию
В этом последнем разделе мы рассмотрим, как найти индексные позиции всех элементов, которые соответствуют определенному условию. Допустим, например, что мы хотим найти все индексные позиции элементов, содержащих букву 'y'
. Мы могли бы использовать подход, описанный выше, где мы находим индексные позиции всех элементов. Однако, мы добавим дополнительное условие к нашей проверке:
Основное отличие этой функции от предыдущей заключается в том, что оценка производится на основе более "нечеткого" условия.
Заключение
В этом руководстве вы научились использовать метод index списка в Python. Вы узнали, как работает метод и как использовать его для поиска индексной позиции искомого термина. Также вы научились находить индексные позиции элементов, которые встречаются более одного раза, а также находить последнюю индексную позицию элемента.
Наконец, вы научились обрабатывать ошибки, когда элемент не существует, а также как находить индексы элементов, соответствующих условию.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с приведенными ниже учебными пособиями:
Списки Python: полный обзор
Zip-списки Python — заархивируйте два или более списков в Python
Python IndexError: объяснение ошибки индекса списка вне диапазона
Last updated