Python Список index() с примером

Список — это контейнер, в котором в упорядоченной последовательности хранятся элементы разных типов данных (целые числа, числа с плавающей запятой, логические значения, строки и т. д.). Это важная структура данных, встроенная в Python. Данные записываются в квадратных скобках ([]), а значения разделяются запятой (,).

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

В списке доступно множество методов, и одним из важных является index().

Python Индекс списка()

Метод list index() помогает вам найти первый наименьший индекс данного элемента. Если внутри списка есть повторяющиеся элементы, возвращается первый индекс элемента. Это самый простой и понятный способ получить индекс.

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

Метод list index() возвращает первый наименьший индекс данного элемента.

Синтаксис

list.index(element, start, end)

Параметры

Параметры Описание
элемент Элемент, индекс которого вы хотите получить.
Начало Этот параметр является необязательным. Вы можете определить индекс start: для поиска элемента. Если не указано, значение по умолчанию равно 0.
конец Этот параметр является необязательным. Вы можете указать конечный индекс элемента для поиска. Если не задано, оно считается до конца списка.

Возвращаемое значение

Метод list index() возвращает индекс данного элемента. Если элемент отсутствует в списке, метод index() выдаст ошибку, например ValueError: «Элемент» отсутствует в списке.

Пример: найти индекс данного элемента.

В списке my_list = ['A', 'B', 'C', 'D', 'E', 'F'] мы хотели бы узнать индекс для элемента C и F.

В примере ниже показано, как получить индекс.

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("The index of element C is ", my_list.index('C'))
print("The index of element F is ", my_list.index('F'))

Вывод:

The index of element C is  2
The index of element F is  5

Пример: использование начала и конца в index()

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

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('C', 1, 5))
print("The index of element F is ", my_list.index('F', 3, 7))
#using just the startindex
print("The index of element D is ", my_list.index('D', 1))

Вывод:

The index of element C is  2
The index of element F is  5
The index of element D is  3

Пример. Чтобы протестировать метод index() с отсутствующим элементом.

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

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('Z'))

Вывод:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print("The index of element C is ", my_list.index('Z'))
ValueError: 'Z' is not in list

Использование цикла for для получения индекса элемента в списке

Мы видели, что метод list.index() возвращает индекс элемента, передаваемого в качестве аргумента.

Теперь рассмотрим список следующим образом: my_list = ['Гуру', 'Сия', 'Тия', 'Гуру', 'Дакш', 'Рия', 'Гуру'] . Имя «Гуру» присутствует в индексе 3 раза, и мне нужны все индексы с именем «Гуру».

Используя цикл for, мы сможем получить несколько индексов, как показано в примере ниже.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
all_indexes = [] 
for i in range(0, len(my_list)) : 
    if my_list[i] == 'Guru' : 
        all_indexes.append(i)
print("Originallist ", my_list)
print("Indexes for element Guru : ", all_indexes)

Вывод:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Использование цикла while и list.index()

Использование цикла while будет проходить по заданному списку, чтобы получить все индексы данного элемента.

В списке: my_list = ['Гуру', 'Сия', 'Тия', 'Гуру', 'Дакш', 'Рия', 'Гуру'] нам нужны все индексы элемента «Гуру».

Ниже приведен пример, показывающий, как получить все индексы с помощью цикла while.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
result = []
elementindex = -1
while True:
    try:
        elementindex = my_list.index('Guru', elementindex+1)
        result.append(elementindex)
    except  ValueError:
        break
print("OriginalList is ", my_list)
print("The index for element Guru is ", result)

Вывод:

OriginalList is  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
The index for element Guru is  [0, 3, 6]

Использование понимания списка для получения индекса элемента в списке

Чтобы получить все индексы, быстрый и простой способ — использовать понимание списка в списке.

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

Они помогают сократить длинные циклы и сделать ваш код более простым для чтения и сопровождения.

В следующем примере показано, как это сделать:

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru']
print("Indexes for element Guru : ", all_indexes)

Вывод:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Использование Enumerate для получения индекса элемента в списке

Функция Enumerate() — это встроенная функция, доступная в Python. Вы можете использовать enumerate, чтобы получить все индексы элемента в списке. Он принимает входные данные как итерируемый объект (т. е. объект, который можно зациклить), а выходные данные — объект со счетчиком для каждого элемента.

В следующем примере показано, как использовать перечисление в списке, чтобы получить все индексы для данного элемента.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])

Вывод:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Использование фильтра для получения индекса элемента в списке

Метод filter() фильтрует данный список на основе заданной функции. Каждый элемент списка будет передан в функцию, а необходимые элементы будут отфильтрованы на основе условия, заданного в функции.

Давайте воспользуемся методом filter(), чтобы получить индексы для данного элемента в списке.

В следующем примере показано, как использовать фильтр в списке.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list)))) 
print("Indexes for element Guru : ", all_indexes)

Вывод:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

Использование NumPy для получения индекса элемента в списке

Библиотека NumPy специально используется для массивов. Итак, здесь мы воспользуемся NumPy, чтобы получить индекс нужного нам элемента из заданного списка.

Чтобы использовать NumPy, нам необходимо установить его и импортировать.

Вот шаги для того же:

Шаг 1) Установить NumPy

pip install numpy

Шаг 2) Импортируйте модуль NumPy.

import numpy as np

Шаг 3) Используйте np.array для преобразования списка в массив.

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)

Шаг 4) Получите индекс нужного элемента, используя np.where().

item_index = np.where(np_array == 'Guru')[0]

Окончательный рабочий код с выводом выглядит следующим образом:

import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)
item_index = np.where(np_array == 'Guru')[0]
print("Originallist ", my_list)
print("Indexes for element Guru :", item_index)

Вывод:

Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0 3 6]

Использование more_itertools.locate() для получения индекса элемента в списке

more_itertools.locate() помогает найти индексы элемента в списке. Этот модуль будет работать с версией Python 3.5+. Пакет more_itertools необходимо сначала установить, чтобы использовать его.

Ниже приведены шаги по установке и использованию more_itertools.

Шаг 1) Установите more_itertools с помощью pip (менеджера пакетов Python). Команда

pip install more_itertools

Шаг 2) После завершения установки импортируйте разместить модуль, как показано ниже

from more_itertools import locate

Теперь вы можете использовать модульlocate в списке, как показано ниже в примере:

from more_itertools import locate
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist : ", my_list)
print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))

Вывод:

Originallist :  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0, 3, 6]

Резюме

  • Метод list index() помогает вам найти индекс данного элемента. Это самый простой и понятный способ получить индекс.
  • Метод list index() возвращает индекс данного элемента.
  • Если элемент отсутствует в списке, метод index() выдаст ошибку, например ValueError: «Элемент» отсутствует в списке.
  • Помимо встроенного метода списка, вы также можете использовать другие способы получения индекса, например циклический просмотр списка, использование списков, использование enumerate(), использование фильтра и т. д.
  • Использование циклов for и while для получения нескольких индексов данного элемента.
  • Чтобы получить все индексы, быстрый и простой способ — использовать понимание списка в списке.
  • Понимание списков Python функции, которые используются для создания новых последовательностей.
  • Они помогают сократить длинные циклы и сделать ваш код более простым для чтения и сопровождения.
  • Вы можете использовать enumerate, чтобы получить все индексы элемента в списке.
  • Функция Enumerate() — это встроенная функция, доступная в Python. Он принимает входные данные как итерируемый объект (т. е. объект, который можно зациклить), а выходные данные — объект со счетчиком для каждого элемента.
  • Метод filter() фильтрует данный список на основе заданной функции.
  • Библиотека Numpy специально используется для массивов. Вы можете использовать NumPy, чтобы получить индекс элемента, указанного в списке.
  • more_itertools.locate() — это еще одна библиотека Python, которая помогает найти индексы заданного списка.