Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Python list.index(): как находить позиции элементов — практические примеры

Списки Python — упорядоченные коллекции, способные хранить элементы любого типа: целые числа, строки, булевы значения, вложенные списки и многое другое. Встроенный метод list.index() — самый быстрый способ найти позицию элемента в этой последовательности. Ниже вы найдёте пошаговое руководство с кусками кода и альтернативными техниками для получения индексов, даже когда элемент встречается несколько раз.

Понимание list.index()

Метод list.index() возвращает наименьший индекс, по которому встречается указанное значение. Если значение отсутствует, поднимает ValueError. Для справки см. официальную документацию Python.

Синтаксис

list.index(element, start=0, end=len(list))

Параметры

ПараметрОписание
elementЗначение, которое нужно найти.
startОпционально. Начать поиск с этого индекса. По умолчанию 0.
endОпционально. Остановить поиск перед этим индексом. По умолчанию — длина списка.

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

Возвращает целочисленный индекс первого совпадающего элемента. Поднимает ValueError, если элемент отсутствует.

Пример: базовое использование

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("Index of 'C':", my_list.index('C')) # 2
print("Index of 'F':", my_list.index('F')) # 5

Пример: использование start и end

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("Index of 'C' between 1 and 5:", my_list.index('C', 1, 5)) # 2
print("Index of 'F' between 3 and 7:", my_list.index('F', 3, 7)) # 5
print("Index of 'D' starting from 1:", my_list.index('D', 1)) # 3

Пример: элемент не найден

my_list = ['A', 'B', 'C', 'D']
try:
    my_list.index('Z')
except ValueError as e:
    print(e) # 'Z' is not in list

Получение всех индексов для повторяющегося элемента

Когда значение встречается несколько раз, list.index() возвращает только первую позицию. Ниже — несколько подходов для сбора всех индексов.

Использование for-цикла

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
for i, val in enumerate(my_list):
    if val == 'Guru':
        indices.append(i)
print(indices) # [0, 3, 6]

While-цикл с index()

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
next_index = -1
while True:
    try:
        next_index = my_list.index('Guru', next_index + 1)
        indices.append(next_index)
    except ValueError:
        break
print(indices) # [0, 3, 6]

List Comprehension

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices) # [0, 3, 6]

Использование enumerate()

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices) # [0, 3, 6]

Использование filter()

indices = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list))))
print(indices) # [0, 3, 6]

Продвинутые техники

NumPy для больших наборов данных

При работе с числовыми или большими текстовыми данными конвертация списка в NumPy-массив ускоряет поиск.

pip install numpy
import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
array = np.array(my_list)
indices = np.where(array == 'Guru')[0]
print(indices) # [0 3 6]

more_itertools.locate()

Для чистого функционального подхода more_itertools.locate() возвращает итератор индексов, удовлетворяющих предикату.

pip install more_itertools
from more_itertools import locate
indices = list(locate(my_list, lambda x: x == 'Guru'))
print(indices) # [0, 3, 6]

Ключевые выводы

Python

  1. Освоение std::list в C++: синтаксис, функции и практические примеры
  2. Мастерство метода strip() в Python: подробное руководство и практические примеры
  3. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  4. Функция round() в Python: подробное объяснение с практическими примерами
  5. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  6. Python timeit(): измерение времени выполнения с практическими примерами
  7. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  8. Python list.count(): экспертное руководство с практическими примерами
  9. Как удалить дубликаты из списка Python: 8 проверенных способов
  10. Как удалять элементы из списка Python: remove(), pop(), clear() и del