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

⚡ Розумний підсумок

Python list index() повертає першу позицію заданого елемента, тоді як looping Конструкції, спискові обробники, enumerate(), filter(), бібліотека NumPy та more_itertools.locate() розширюють цю техніку для збору кожного відповідного індексу у списку, що містить дублікати значень.

  • 🔘 Метод index(): Вбудована функція index() повертає першу найнижчу позицію елемента та приймає необов'язкові початкові та кінцеві обмеження.
  • ☑️ Помилка значення: index() викликає ValueError, коли елемент відсутній, тому виклик обгортаємо try-except для безпечних пошуків.
  • Усі випадки: Цикли for, while або спискові обчислення збирають кожен індекс, коли значення повторюється всередині списку.
  • 🧪 Вбудовані помічники: Функції enumerate() та filter() поєднують індекс з кожним елементом, надаючи стислі однорядкові способи збору відповідних позицій.
  • 🛠️ NumPy та more_itertools: np.where() та more_itertools.locate() ефективно повертають усі відповідні індекси для великих наборів даних.
  • 🤖 Робочі процеси зі штучним інтелектом: Конвеєри машинного навчання знаходять позиції міток та відповідні зразки за індексом, перш ніж масиви передаються моделі.

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

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

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

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

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

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

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

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

синтаксис

list.index(element, start, end)

Параметри

Параметри Опис
елемент Елемент, індекс якого ви хочете отримати.
старт Цей параметр необов'язковий. Ви можете визначити початковий індекс для пошуку елемента. Якщо його не вказано, значення за замовчуванням дорівнює 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', 'Сія', 'Тія', 'Guru', 'Дакш', 'Рія', 'Guru']. Назва 'Guru' присутній 3 рази в індексі, і мені потрібні всі індекси з назвою 'Guru.

Використовуючи цикл 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', 'Сія', 'Тія', 'Guru', 'Дакш', 'Рія', '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]

Поширені запитання

Метод index() викликає ValueError, коли елемент відсутній. Оберніть виклик у блок try-except або спочатку перевірте членство за допомогою оператора in, щоб відсутнє значення не призвело до аварійного завершення програми.

Значення, яке повертає index(), завжди є невід'ємною позицією, відрахованою від початку. Ви можете передавати від'ємні аргументи початку або кінця, щоб обмежити пошук, але сама index() ніколи не повертає від'ємний індекс для знайденого елемента.

Так. index() точно порівнює елементи, тому 'Guru' та 'guru' обробляються як різні значення. Пошук неправильного регістру викликає ValueError. Нормалізуйте рядки за допомогою lower() перед пошуком, якщо вам потрібне зіставлення без урахування регістру.

Використовуйте оператор in, наприклад, якщо 'Guru' у my_list. Він повертає True або False без виникнення помилки, тому ви можете безпечно викликати index() лише тоді, коли елемент дійсно присутній у списку.

Для одного пошуку вбудована функція index() вже ефективна, оскільки зупиняється на першому збігу. Щоб знаходити багато значень повторно, побудуйте карту словника.ping кожне значення до його індексу, що перетворює кожен пошук на швидку операцію з постійним часом.

Python Списки мають index(), але не мають методу find(). index() викликає ValueError, коли елемент відсутній, тоді як рядок find() повертає -1. Для списків перехоплюйте помилку або перевіряйте належність за допомогою оператора in.

Визначення індексу елемента допомагає зіставити категоріальні мітки з числовими позиціями, знайти місце розташування передбачуваного класу або вирівняти стовпці ознак перед навчанням. NumPy розширює це за допомогою np.where() для швидкого пошуку індексів у великих масивах та наборах даних.

Так. GitHub Copilot та агентні помічники ШІ генерують index(), enumerate() та пошук на основі розуміння зі звичайного коментаря, пропонують безпечну обробку помилок для відсутніх значень та рефакторинг циклів, хоча вам все одно слід тестувати граничні випадки та перевіряти повернуті позиції.

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