Функция index() в Python
Метод index() возвращает индекс указанного элемента в списке.
Синтаксис метода в Python:
list.index(element, start, end)
Список параметров
- element – элемент для поиска;
- start (необязательно) – начать поиск с этого индекса;
- end (необязательно) – искать элемент до этого индекса.
Возвращаемое значение из списка
- Метод возвращает индекс данного элемента в списке.
- Если элемент не найден, возникает исключение ValueError.
Примечание: Команда возвращает только первое вхождение соответствующего элемента.
Пример 1: Найти индекс элемента
# vowels list vowels = ['a', 'e', 'i', 'o', 'i', 'u'] # index of 'e' in vowels index = vowels.index('e') print('The index of e:', index) # element 'i' is searched # index of the first 'i' is returned index = vowels.index('i') print('The index of i:', index)
The index of e: 1 The index of i: 2
Пример 2: Указатель элемента, отсутствующего в списке
# vowels list vowels = ['a', 'e', 'i', 'o', 'u'] # index of'p' is vowels index = vowels.index('p') print('The index of p:', index)
ValueError: 'p' is not in list
Пример 3: Работа с параметрами начала и конца
# alphabets list alphabets = ['a', 'e', 'i', 'o', 'g', 'l', 'i', 'u'] # index of 'i' in alphabets index = alphabets.index('e') # 2 print('The index of e:', index) # 'i' after the 4th index is searched index = alphabets.index('i', 4) # 6 print('The index of i:', index) # 'i' between 3rd and 5th index is searched index = alphabets.index('i', 3, 5) # Error! print('The index of i:', index)
The index of e: 1 The index of i: 6 Traceback (most recent call last): File "*lt;string>", line 13, in ValueError: 'i' is not in list
Python – Получить индекс или положение элемента в списке
Python – найти индекс или положение элемента в списке
Чтобы найти индекс первого вхождения элемента в данном списке Python, вы можете использовать индекс () метод списка класса с элементом, пройденным в качестве аргумента.
index = mylist.index(element)
Метод Index () Возвращает целое число, которое представляет индекс первого совпадения указанного элемента в списке.
Вы также можете предоставить начальные и конец позиции списка, где поиск должен произойти в списке.
Ниже приведен синтаксис индекса () функции с начальными и торцевыми позициями.
index = mylist.index(x, [start[,end]])
Начать Параметр необязательный. Если вы предоставляете значение для Начать Тогда конец не является обязательным.
Мы посмотрим на примеры, где мы проходим через каждый из этих сценариев подробно.
Пример 1. Найти индекс элемента в списке
В следующем примере мы взяли список с номерами. Использование метода Index () Мы найдем индекс товара 8 в списке.
mylist = [21, 5, 8, 52, 21, 87] item = 8 #search for the item index = mylist.index(item) print('The index of', item, 'in the list is:', index)
The index of 8 in the list is: 2
Элемент присутствует на 3-й позиции, поэтому mylist.index () Функция возвращена 2.
Пример 2: Найти индекс элемента в списке – начало, конец
В следующем примере мы взяли список с номерами. Использование метода Index () Мы найдем индекс товара 8 в списке. Кроме того, мы будем проходить начало и конец. Функция index () рассматривает только те элементы в списке, начиная с Начать Индекс, до конец позиция в Милист Отказ
mylist = [21, 8, 67, 52, 8, 21, 87] item = 8 start=2 end=7 #search for the item index = mylist.index(item, start, end) print('The index of', item, 'in the list is:', index)
The index of 8 in the list is: 4
mylist = [21, 8, 67, 52, 8, 21, 87] ----------------- only this part of the list is considered ^ index finds the element here 0 1 2 3 4 => 4 is returned by index()
Пример 3: Найти индекс элемента – элемент имеет несколько вхождений в списке
Список Python может содержать несколько вхождений элемента. В таких случаях возвращается только индекс первого вхождения указанного элемента в списке.
mylist = [21, 5, 8, 52, 21, 87, 52] item = 52 #search for the item index = mylist.index(item) print('The index of', item, 'in the list is:', index)
The index of 52 in the list is: 3
Элемент 52 присутствует два раза, но только индекс первого вхождения возвращается методом индекса ().
Давайте понять, как работает метод индекса (). Функция сканирует список от начала. Когда элемент соответствует аргументу, функция возвращает этот индекс. Последние вхождения игнорируются.
Пример 4: Найти индекс элемента в списке – товар отсутствует
Если элемент, который мы ищем в списке, нет, вы получите ValueError с сообщением Товар не в списке Отказ
В следующей программе мы предприняли список и постараемся найти индекс элемента, который отсутствует в списке.
mylist = [21, 5, 8, 52, 21, 87, 52] item = 67 #search for the item/element index = mylist.index(item) print('The index of', item, 'in the list is:', index)
Traceback (most recent call last): File "example.py", line 5, inindex = mylist.index(item) ValueError: 67 is not in list
В качестве индекса () можно бросить ValueError, используйте Python Try – за исключением при использовании индекса (). В следующем примере мы узнаем, как использовать оператор TRY – кроме, для обработки этого ValueError.
mylist = [21, 5, 8, 52, 21, 87, 52] item = 67 try: #search for the item index = mylist.index(item) print('The index of', item, 'in the list is:', index) except ValueError: print('item not present')
item not present
Элемент, индекс которого мы пытаемся найти, нет в списке. Поэтому mylist.index (товар) бросает valueError. За исключением ValueError: Блок ловит эту ошибку, а соответствующий блок выполнен.
Резюме
В этом учебном пособии Python мы узнали, как найти индекс элемента/элемента в списке, с помощью хорошо подробных примеров.
Читайте ещё по теме:
- Индекс списка вне диапазона в Python: Ошибка и решение
- Как получить доступ к индексу в цикле for Python
- Список Python – 15 вещей, которые вы должны знать
- Список Python POP ()
- Python: Нотация среза в списке
- Полное руководство по спискам Python
- Как нарезать список в Python?
Индексы и срезы
Сегодня мы поговорим об операциях взятия индекса и среза.
Взятие элемента по индексу
Как и в других языках программирования, взятие по индексу:
File
Как и во многих других языках, нумерация элементов начинается с нуля. При попытке доступа к несуществующему индексу возникает исключение IndexError.
В данном примере переменная a являлась списком, однако взять элемент по индексу можно и у других типов: строк, кортежей.
В Python также поддерживаются отрицательные индексы, при этом нумерация идёт с конца, например:
File
Срезы
В Python, кроме индексов, существуют ещё и срезы.
item[START:STOP:STEP] — берёт срез от номера START, до STOP (не включая его), с шагом STEP. По умолчанию START = 0, STOP = длине объекта, STEP = 1. Соответственно, какие-нибудь (а возможно, и все) параметры могут быть опущены.
Также все эти параметры могут быть и отрицательными:
В последнем примере получился пустой список, так как START < STOP, а STEP отрицательный. То же самое произойдёт, если диапазон значений окажется за пределами объекта:
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Как найти индекс элемента списка в Python
Изучая программирование на Python, вы практически в самом начале знакомитесь со списками и различными операциями, которые можете выполнять над ними. В этой статье мы бы хотели рассказать об одной из таких операций над списками.
Представьте, что у вас есть список, состоящий из каких-то элементов, и вам нужно определить индекс элемента со значением x . Сегодня мы рассмотрим, как узнать индекс определенного элемента списка в Python.
Но сначала давайте убедимся, что все понимают, что представляет из себя список.
Что такое список в Python?
Список в Python — это встроенный тип данных, который позволяет нам хранить множество различных значений, таких как числа, строки, объекты datetime и так далее.
Важно отметить, что списки упорядочены. Это означает, что последовательность, в которой мы храним значения, важна.
Индексирование списка начинаются с нуля и заканчивается на длине списка минус один. Для получения более подробной информации о списках вы можете обратиться к статье «Списки в Python: полное руководство для начинающих».
Итак, давайте посмотрим на пример списка:
fruits = ["apple", "orange","grapes","guava"] print(type(fruits)) print(fruits[0]) print(fruits[1]) print(fruits[2]) # Результат: # # apple # orange # grapes
Мы создали список из 4 элементов. Первый элемент в списке имеет нулевой индекс, второй элемент — индекс 1, третий элемент — индекс 2, а последний — 3.
Для списка получившихся фруктов fruits допустимыми индексами являются 0, 1, 2 и 3. При этом длина списка равна 4 (в списке 4 элемента). Индекс последнего элемента равен длине списка (4) минус один, то есть как раз 3.
Как определить индекс элемента списка в Python
Итак, как же определить индекс элемента в Python? Давайте представим, что у нас есть элемент списка и нам нужно узнать индекс или позицию этого элемента. Сделать это можно следующим образом:
print(fruits.index('orange')) # 1 print(fruits.index('guava')) # 3 print(fruits.index('banana')) # А здесь выскочит ValueError, потому что в списке нет значения banana
Списки Python предоставляют нам метод index() , с помощью которого можно получить индекс первого вхождения элемента в список, как это показано выше.
Познакомиться с другими методами списков можно в статье «Методы списков Python».
Мы также можем заметить, что метод index() вызовет ошибку VauleError , если мы попытаемся определить индекс элемента, которого нет в исходном списке.
Для получения более подробной информации о методе index() загляните в официальную документацию.
Базовый синтаксис метода index() выглядит так:
где list_var — это исходный список, item — искомый элемент.
Мы также можем указать подсписок для поиска, и синтаксис для этого будет выглядеть следующим образом:
list_var.index(item, start_index_of_sublist, end_index_of_sublist)
Здесь добавляются два аргумента: start_index_of_sublist и end_index_of_sublist . Тут всё просто. start_index_of_sublist обозначает, с какого элемента списка мы хотим начать поиск, а end_index_of_sublist , соответственно, на каком элементе (не включительно) мы хотим закончить.
Чтобы проиллюстрировать это для лучшего понимания, давайте рассмотрим следующий пример.
Предположим, у нас есть список book_shelf_genres , где индекс означает номер полки (индексация начинается с нуля). У нас много полок, среди них есть и полки с учебниками по математике.
Мы хотим узнать, где стоят учебники по математике, но не вообще, а после четвертой полки. Для этого напишем следующую программу:
book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", "Cooking", "Math"] print(book_shelf_genres.index("Math")) # Результат: # 1
Здесь мы видим проблему. Использование просто метода index() без дополнительных аргументов выдаст первое вхождение элемента в список, но мы хотим знать индекс значения «Math» после полки 4.
Для этого мы используем метод index() и указываем подсписок для поиска. Подсписок начинается с индекса 5 до конца списка book_shelf_genres , как это показано во фрагменте кода ниже:
print(book_shelf_genres.index("Math", 5)) # Результат: # 7
Обратите внимание, что указывать конечный индекс подсписка необязательно.
Чтобы вывести индекс элемента «Math» после полки номер 1 и перед полкой номер 5, мы просто напишем следующее:
print(book_shelf_genres.index("Math", 2, 5)) # Результат: # 4
Как найти индексы всех вхождений элемента в списке
А что, если искомое значение встречается в списке несколько раз и мы хотим узнать индексы всех этих элементов? Метод index() выдаст нам индекс только первого вхождения.
В этом случае мы можем использовать генератор списков:
book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", \ "Cooking", "Math"] indices = [i for i in range(0, len(book_shelf_genres)) if book_shelf_genres[i]=="Math"] print(indices) # Результат: # [1, 4, 7]
В этом фрагменте кода мы перебираем индексы списка в цикле for и при помощи range(). Далее мы проверяем значение элемента под каждым индексом на равенство « Math «. Если значение элемента — « Math «, мы сохраняем значение индекса в списке.
Все это делается при помощи генератора списка, который позволяет нам перебирать список и выполнять некоторые операции с его элементами. В нашем случае мы принимаем решения на основе значения элемента списка, а в итоге создаем новый список.
Подробнее про генераторы списков можно почитать в статье «Генераторы списков в Python для начинающих».
Благодаря генератору мы получили все номера полок, на которых стоят книги по математике.
Как найти индекс элемента в списке списков
Теперь представьте ситуацию, что у вас есть вложенный список, то есть список, состоящий из других списков. И ваша задача — определить индекс искомого элемента для каждого из подсписков. Сделать это можно следующим образом:
programming_languages = [["C","C++","Java"],\ ["Python","Rust","R"],\ ["JavaScript","Prolog","Python"]] indices = [(i, x.index("Python")) for i, x in enumerate(programming_languages) if "Python" in x] print(indices) # Результат: # [(1, 0), (2, 2)]
Здесь мы используем генератор списков и метод index() , чтобы найти индексы элементов со значением «Python» в каждом из имеющихся подсписков. Что же делает этот код?
Мы передаем список programming_languages методу enumerate() , который просматривает каждый элемент в списке и возвращает кортеж, содержащий индекс и значение элемента списка.
Каждый элемент в списке programming_languages также является списком. Оператор in проверяет, присутствует ли элемент «Python» в этом списке. Если да — мы сохраняем индекс подсписка и индекс элемента «Python» внутри подсписка в виде кортежа.
Результатом программы, как вы можете видеть, является список кортежей. Первый элемент кортежа — индекс подсписка, а второй — индекс искомого элемента в этом подсписке.
Таким образом, (1,0) означает, что подсписок с индексом 1 списка programming_languages имеет элемент «Python» , который расположен по индексу 0. То есть, говоря простыми словами, второй подсписок содержит искомый элемент и этот элемент стоит на первом месте. Не забываем, что в Python индексация идет с нуля.
Как искать индекс элемента, которого, возможно, нет в списке
Бывает, нужно получить индекс элемента, но мы не уверены, есть ли он в списке.
Если попытаться получить индекс элемента, которого нет в списке, метод index() вызовет ошибку ValueError . При отсутствии обработки исключений ValueError вызовет аварийное завершение программы. Такой исход явно не является хорошим и с ним нужно что-то сделать.
Вот два способа, с помощью которых мы можем избежать такой ситуации:
books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"] ind = books.index("The Pragmatic Programmer") if "The Pragmatic Programmer" in books else -1 print(ind) # Результат: # 2
Один из способов — проверить с помощью оператора in , есть ли элемент в списке. Оператор in имеет следующий синтаксис:
var in iterable
Итерируемый объект — iterable — может быть списком, кортежем, множеством, строкой или словарем. Если var существует как элемент в iterable , оператор in возвращает значение True . В противном случае он возвращает False .
Это идеально подходит для решения нашей проблемы. Мы просто проверим, есть ли элемент в списке, и вызовем метод index() только если элемент существует. Это гарантирует, что метод index() не вызовет нам ошибку ValueError .
Но если мы не хотим тратить время на проверку наличия элемента в списке (это особенно актуально для больших списков), мы можем обработать ValueError следующим образом:
books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"] try: ind = books.index("Design Patterns") except ValueError: ind = -1 print(ind) # Результат: # -1
Здесь мы применили конструкцию try-except для обработки ошибок. Программа попытается выполнить блок, стоящий после слова try . Если это приведет к ошибке ValueError , то она выполнит блок после ключевого слова except . Подробнее про обработку исключений с помощью try-except можно почитать в статье «Обрабатываем исключения в Python: try и except».
Заключение
Итак, мы разобрали как определить индекс элемента списка в Python. Теперь вы знаете, как это сделать с помощью метода index() и генератора списков.
Мы также разобрали, как использовать метод index() для вложенных списков и как найти каждое вхождение элемента в списке. Кроме того, мы рассмотрели ситуацию, когда нужно найти индекс элемента, которого, возможно, нет в списке.
Мы надеемся, что данная статья была для вас полезной. Успехов в написании кода!
Больше 50 задач по Python c решением и дискуссией между подписчиками можно посмотреть тут
