Python Список index() із прикладом

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

Елементи всередині списку індексуються з першим елементом, починаючи з індексу 0. Ви можете вносити зміни у створений список, додаючи нові елементи або оновлюючи, видаляючи існуючі. Він також може мати повторювані елементи та вкладений список.

У списку доступно багато методів, і найважливішим з них є index().

Python Індекс списку()

Метод list index() допомагає вам знайти перший найнижчий індекс даного елемента. Якщо в списку є повторювані елементи, повертається перший індекс елемента. Це найпростіший і зрозумілий спосіб отримати індекс.

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

Метод list index() повертає перший найнижчий індекс даного елемента.

синтаксис

list.index(element, start, end)

Параметри

Параметри Опис
елемент Елемент, індекс якого ви хочете отримати.
старт Цей параметр необов'язковий. Ви можете визначити start: index для пошуку елемента. Якщо не вказано, значення за умовчанням дорівнює 0.
кінець Цей параметр необов'язковий. Ви можете вказати кінцевий індекс для елемента, який буде шукатися. Якщо не вказано, воно вважається до кінця списку.

значення, що повертається

Метод list index() повертає індекс даного елемента. Якщо елемент відсутній у списку, метод index() видасть помилку, наприклад, ValueError: 'Element' is not in the list.

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

У списку 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 = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] . Ім’я «Гуру» присутнє в індексі 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 = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] нам потрібні всі індекси елемента 'Guru'.

Нижче наведено приклад того, як отримати всі індекси за допомогою циклу 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, щоб отримати всі індекси елемента в списку. Він приймає вхідні дані як ітерований об’єкт (тобто об’єкт, який можна зациклювати), а вихідні дані є об’єктом із лічильником для кожного елемента.

У наступному прикладі показано, як використовувати 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: 'Element' is not in list.
  • Окрім вбудованого методу списку, ви також можете використовувати інші способи отримання індексу, як-от цикл по списку, використання списку розуміння, використання enumerate(), використання фільтра тощо.
  • Використання циклу for і while для отримання кількох індексів певного елемента.
  • Щоб отримати всі індекси, швидким і простим способом є використання розуміння списку в списку.
  • Спискові розуміння є Python функції, які використовуються для створення нових послідовностей.
  • Вони допомагають зменшити довші цикли та полегшити читання та підтримку коду.
  • Ви можете використовувати enumerate, щоб отримати всі індекси елемента в списку.
  • Функція Enumerate() є вбудованою функцією, доступною з python. Він приймає вхідні дані як ітерований об’єкт (тобто об’єкт, який можна зациклювати), а вихідні дані є об’єктом із лічильником для кожного елемента.
  • Метод filter() фільтрує заданий список на основі заданої функції.
  • Бібліотека Numpy спеціально використовується для масивів. Ви можете використовувати NumPy, щоб отримати індекс елемента, указаного в списку.
  • more_itertools.locate() — ще одна бібліотека Python, яка допомагає знайти індекси наданого списку.

Підсумуйте цей пост за допомогою: