поиск индекса в списке python

Python: проверить индекс элемента в списке

Мы рассмотрим различные сценарии поиска элемента, то есть нахождение первого, последнего и всех вхождений элемента. А также что происходит, когда искомого элемента не существует.

Использование Функции index()

Функция возвращает первую позицию element в списке, которую она могла найти, независимо от того, сколько равных элементов осталось после первого вхождения.

Нахождение первого появления элемента

Использование функции index() без установки каких-либо значений для start и end даст нам первое вхождение искомого element :

Что даст нам ожидаемый результат:

Поиск всех вхождений элемента

Запуск этого кода даст нам:

Однако в Python мы должны быть осторожны и использовать блок try при использовании этой функции.

Нахождение последнего появления элемента

Если вам нужно найти последнее вхождение элемента в списке, есть два подхода, которые вы можете использовать с функцией index() :

Что даст нам желаемый результат:

Что касается второго подхода, мы могли бы настроить код, который мы использовали, чтобы найти все вхождения, и отслеживать только последнее обнаруженное вхождение:

Что даст нам тот же результат:

Вывод

Мы рассмотрели некоторые из наиболее распространенных способов использования функции index() и способы избежать ошибки в некоторых случаях.

Источник

Поиск элемента в списке Python

Сегодня я расскажу, как проверить, содержит ли список элемент с помощью разных операторов в Python.

Используя цикл for

В качестве примера, я буду использовать список строк, содержащих несколько животных:

Простой и рудиментарный метод проверки, содержит ли список элемент: наш метод проходит через элемент и проверяет, соответствует ли элемент, на котором мы находимся, тому, который мы ищем. Давайте для этого воспользуемся циклом for:

Используя оператор in

Теперь более лаконичным подходом было бы использование встроенного оператора in, но с оператором if вместо оператора for. В паре с if он возвращает True, если элемент существует в последовательности или нет. Синтаксис оператора in выглядит следующим образом:

Используя этот оператор, мы можем сократить наш предыдущий код в один оператор:

Этот подход имеет ту же эффективность, что и цикл for, поскольку оператор in, используемый таким образом, вызывает функцию list.__contains__, которая по своей сути циклически проходит через список — хотя это гораздо читабельнее.

Используя оператор not in

Вы можете использовать оператор not in, который является логической противоположностью оператору in. Он возвращает True, если элемент не присутствует в последовательности.

Давайте перепишем предыдущий пример кода, чтобы использовать оператор not in:

Читайте также:  когда умирает человек что нужно сделать дома традиции

Запуск этого кода ничего не даст, так как Bird присутствует в нашем списке.

Но если мы попробуем это с Wolf:

С помощью лямбда функции

Еще один способ проверить, присутствует ли элемент — отфильтровать все, кроме этого элемента, точно так же, как просеять песок и проверить, остались ли в конце какие-нибудь раковины. Встроенный метод filter() принимает в качестве аргументов лямбда-функцию и список. Здесь мы можем использовать лямбда-функцию для проверки нашей строки «Bird» в списке animals.

Затем мы оборачиваем результаты в list(), так как метод filter() возвращает объект filter, а не результаты. Если мы упакуем объект filter в список, он будет содержать элементы, оставшиеся после фильтрации:

Сейчас этот подход не самый эффективный. Это довольно медленнее, чем предыдущие три подхода, которые мы использовали. Сам метод filter() эквивалентен функции генератора:

Замедление производительности этого кода, помимо всего прочего, происходит из-за того, что мы преобразуем результаты в список в конце концов, а также выполняем функцию для элемента на каждой итерации.

Используя функцию any

Еще один отличный встроенный подход заключается в использовании функции any, которая является просто вспомогательной функцией, которая проверяет, есть ли какие-либо (по крайней мере 1) экземпляры элемента в списке. Он возвращает True или False в зависимости от наличия или отсутствия элемента:

Поскольку это приводит к True, наш оператор print сработает:

Этот подход также является эффективным способом проверки наличия элемента. Он ничем не уступает первым трём проверкам!

Используя метод count

Наконец, мы можем использовать функцию count, чтобы проверить, присутствует ли элемент или нет:

Эта функция возвращает вхождение данного элемента в последовательность. Если он больше 0, мы можем быть уверены, что данный элемент находится в списке.

Давайте проверим результаты функции count:

Функция count по своей сути зацикливает список, чтобы проверить количество вхождений, и этот код приводит к запуску print:

Заключение

В этой статье я рассмотрел несколько способов, как проверить, присутствует ли элемент в списке или нет. Я использовал цикл for, операторы in и not in, а также методы filter, any и count.

Пожалуйста, прочитайте другие статьи посвященные языку программирования Python. Помножте свой опыт в программирования с практическими советами от разработчика.

Источник

Метод index() в Python

Метод index() определен для класса строки, списка и кортежа. Для строк метод возвращает минимальный индекс, по которому встречается данная подстрока. В то время как для списков и кортежей метод возвращает минимальный индекс, по которому данный объект найден.

Читайте также:  пол джаматти планета обезьян

Из приведенного выше определения ясно, что метод index() определен только для итераций. Следовательно, это не будет работать для словарей или наборов, поскольку они не соответствуют порядку индексации.

Для итерируемого синтаксиса использования метода Python index() приведен ниже.

1 Список указателей

Метод index() является функцией-членом класса списка. И широко используется для поиска значений в списке.

Программа возвращает индекс 1, когда мы пытаемся найти значение 2 без указания начала и конца. Следовательно, ясно, что во всем списке метод index() возвращает минимальный индекс, в котором присутствует 2.

Затем для указанного диапазона (4-7) метод дает нам значение 5. Это индекс, где 2 встречается второй раз в списке. Но в диапазоне 4-7 пятый показатель — минимальный.

Примечание: метод index() работает таким же образом и для кортежей.

2 Строковый индекс Python()

Переходя к строкам, функция-член Python index() возвращает минимальный индекс, по которому находится начало указанной подстроки.

Давайте посмотрим на пример.

Когда мы указываем диапазон (здесь 5-10), метод соответственно выполняет поиск Py с 5-го по 10-й индекс. Из вывода видно, что функция находит начало подстроки в 7-й позиции.

Источник

Python: Проверка индекса элемента в списке

В этой статье мы рассмотрим примеры того, как получить индекс элемента в списке с помощью функции index() для поиска первого, последнего и всех вхождений элемента.

Python: Проверка индекса элемента в списке

Вступление

Списки полезны по-разному по сравнению с другими типами данных из-за их универсальности. В этой статье мы рассмотрим одну из самых распространенных операций со списками – поиск индекса элемента.

Мы рассмотрим различные сценарии нахождения элемента, то есть нахождение первого, последнего и всех вхождений элемента. А также то, что происходит, когда элемент, который мы ищем, не существует.

Использование функции index()

Значение по умолчанию для start равно 0 (поиск с самого начала), а значение по умолчанию для end – это количество элементов в списке (поиск до конца списка).

Функция возвращает первую позицию элемента | в списке, которую она смогла найти, независимо от того, сколько равных элементов осталось после первого вхождения.

Нахождение первого вхождения элемента

Что даст нам ожидаемый результат:

Поиск всех вхождений элемента

Запуск этого кода даст нам:

Однако в Python мы должны быть осторожны и использовать блок try при использовании этой функции.

Читайте также:  премыкание или примыкание кровли

Другой, более аккуратный способ сделать то же самое-использовать понимание списка и полностью игнорировать функцию index() :

Нахождение последнего вхождения элемента

Если вам нужно найти последнее вхождение элемента в списке, есть два подхода, которые вы можете использовать с функцией index() :

Что касается первого подхода, то если бы мы знали первое вхождение элемента | в перевернутом списке, мы могли бы найти положение последнего вхождения в исходном. Более конкретно, мы можем сделать это, вычитая reversed_list_index – 1 из длины исходного списка:

Что дало бы нам желаемый результат:

Что касается второго подхода, то мы могли бы настроить код, который мы использовали для поиска всех вхождений, и отслеживать только последнее найденное вхождение:

Что дало бы нам тот же результат:

Вывод

Мы рассмотрели некоторые из наиболее распространенных применений функции index() и то, как избежать ее в некоторых случаях.

Источник

Поиск индекса элемента, заданного списком, содержащим его в Python

27 ответов

предостережения следуйте

обратите внимание, что хотя это, пожалуй, проще всего ответить на вопрос как просил, index является довольно слабым компонентом list API, и я не могу вспомнить, когда в последний раз я использовал его в гневе. В комментариях мне было указано, что, поскольку этот ответ сильно ссылается, он должен быть более полным. Некоторые предостережения о list.index следовать. Вероятно, стоит сначала взглянуть на docstring для него:

линейное время-сложность в длине списка

возвращает только индекс первый матч его аргумент

вызов index поиск по списку в порядке, пока он не найдет совпадение, и там останавливается. если вы ожидаете, что вам понадобятся индексы больше соответствует, вы должны использовать понимание списка или выражение генератора.

бросает, если элемент отсутствует в списке

вызов index результаты ValueError если товар не подарок.

если элемент может не присутствовать в списке, вы должны либо

что часто приведет вас к методу, который вы ищете.

большинство ответов объясняют, как найти единый индекс, но их методы не возвращают несколько индексов, если элемент находится в списке несколько раз. Использовать enumerate() :

на index() функция возвращает только первое вхождение, а enumerate() возвращает все вхождения.

как понимание списка:

вот еще одно небольшое решение с itertools.count() (который в значительной степени тот же подход, что и enumerate):

это более эффективно для больших списков, чем при использовании enumerate() :

Источник

Образовательный портал