Функция enumerate
В Python есть еще одна встроенная функция, которая часто используется в заголовке for . Это функция enumerate() . Если range() позволяет получить только индексы элементов списка, то enumerate() – сразу индекс элемента и его значение.
Функция enumerate() применяется для так называемых итерируемых объектов (список относится к таковым) и создает объект-генератор, который генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента.
>>> spisok = [16, 46, 26, 36] >>> for i in enumerate(spisok): . print(i) . (0, 16) (1, 46) (2, 26) (3, 36)
>>> b = "hello" >>> for i in enumerate(b): . print(i) . (0, 'h') (1, 'e') (2, 'l') (3, 'l') (4, 'o')
Эти кортежи можно распаковывать, то есть извлекать индекс и значение, в теле цикла:
>>> for item in enumerate(spisok): . print(item[0], item[1]) . 0 16 1 46 2 26 3 36
Однако чаще это делают еще в заголовке for , используя две переменные перед in :
>>> for id, val in enumerate(spisok): . print(id, val) . 0 16 1 46 2 26 3 36
Функция enumerate используется для упрощения прохода по коллекциям в цикле, когда кроме самих элементов требуется их индекс:
>>> a = [10, 20, 30, 40] >>> for id, item in enumerate(a): . a[id] = item + 5 . >>> a [15, 25, 35, 45]
В данном случае на каждой итерации цикла из объекта, полученного от вызова функции enumerate , извлекается очередной кортеж. Этот кортеж состоит из индекса очередного элемента списка и значения этого элемента. Элементы кортежа связываются с идентификаторами id и item .
Без использования enumerate в цикл пришлось бы вводить переменную-счетчик:
>>> a = [10, 20, 30, 40] >>> # используется счетчик >>> for num in a: . a[id] = num + 5 . id += 1 . >>> a [15, 25, 35, 45]
Или извлекать элементы по индексу:
>>> a = [10, 20, 30, 40] >>> for i in range(len(a)): # перебор по индексам . a[i] += 5 . >>> a [15, 25, 35, 45]
Другими словами, без функции enumerate можно обойтись. Однако в ряде случаев она может быть удобней.
Если enumerate() так хороша, зачем использовать range() в заголовке for ? На самом деле незачем, если только вам так не проще. Кроме того, бывают ситуации, когда значения не нужны, нужны только индексы. Однако следует учитывать один нюанс. Функция enumerate() возвращает так называемый объект-итератор. Когда такие объекты сгенерировали значения, то становятся «пустыми». Второй раз по ним пройтись нельзя.
Функция range() возвращает итерируемый объект. Хотя такой объект может быть превращен в объект-итератор, сам по себе таковым не является.
Когда range() и enumerate() используются в заголовке for , то разницы нет, так как range- и enumerate-объекты не присваиваются переменным и после завершения работы цикла теряются. Но если мы присваиваем эти объекты переменным, их отличия могут сказаться на выполнении программы:
>>> nums = [34, 15, 124, 800, 339] >>> >>> r_obj = range(len(nums)) >>> e_obj = enumerate(nums) >>> >>> for i in r_obj: . print(i) . if i == 1: . break . 0 1 >>> for i in r_obj: . print(nums[i]) . if i == 1: . break . 34 15 >>> for i, v in e_obj: . print(v) . if i == 1: . break . 34 15 >>> for i in r_obj: . print(nums[i]) . 34 15 124 800 339 >>> for i, v in e_obj: . print(v) . 124 800 339
Сначала мы прерываем извлечение элементов из объектов на элементе с индексом 1. Когда снова прогоняем объекты через цикл for , то в случае r_obj обход начинается сначала, а в случае e_obj продолжается после места останова. Объект e_obj уже не содержит извлеченных ранее элементов.
Практическая работа
Дан список чисел. Используя функцию enumerate() в заголовке цикла for , создайте второй список, в котором каждый элемент должен быть строкой, включающей через пробел индекс и значение соответствующего элемента первого списка.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
Как найти индекс значения в массиве NumPy (с примерами)
Вы можете использовать следующие методы, чтобы найти положение индекса определенных значений в массиве NumPy:
Метод 1: найти все ценные позиции в индексе
np.where (x== value )
Метод 2: найти первую позицию индекса значения
np.where (x== value )[0][0]
Метод 3: найти первую позицию индекса нескольких значений
#define values of interest vals = np.array([ value1 , value2 , value3 ]) #find index location of first occurrence of each value of interest sorter = np.argsort (x) sorter[np.searchsorted (x, vals, sorter=sorter)]
В следующих примерах показано, как использовать каждый метод на практике.
Метод 1: найти все ценные позиции в индексе
В следующем коде показано, как найти каждую позицию индекса, которая равна определенному значению в массиве NumPy:
import numpy as np #define array of values x = np.array([4, 7, 7, 7, 8, 8, 8]) #find all index positions where x is equal to 8 np.where (x== 8 ) (array([4, 5, 6]),)
Из вывода мы видим, что позиции индекса 4, 5 и 6 равны значению 8 .
Метод 2: найти первую позицию индекса значения
В следующем коде показано, как найти первую позицию индекса, равную определенному значению в массиве NumPy:
import numpy as np #define array of values x = np.array([4, 7, 7, 7, 8, 8, 8]) #find first index position where x is equal to 8 np.where (x== 8 )[0][0] 4
Из вывода мы видим, что значение 8 сначала встречается в позиции индекса 4.
Метод 3: найти первую позицию индекса нескольких значений
В следующем коде показано, как найти первую позицию индекса нескольких значений в массиве NumPy:
import numpy as np #define array of values x = np.array([4, 7, 7, 7, 8, 8, 8]) #define values of interest vals = np.array([4, 7, 8]) #find index location of first occurrence of each value of interest sorter = np.argsort (x) sorter[np.searchsorted (x, vals, sorter=sorter)] array([0, 1, 4])
Из вывода мы видим:
- Значение 4 сначала встречается в индексной позиции 0.
- Значение 7 сначала встречается в индексной позиции 1.
- Значение 8 сначала встречается в индексной позиции 4.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в NumPy:
Найти индекс минимального элемента
Дан массив вещественных чисел M(12). Найти индекс минимального элемента. После вычислить сумму минимального элемента и его индекса (минимальный элемент + индекс минимального элемента).
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Выводится одинаковый индекс как максимального, так и минимального элемента
выводится одинаковый индекс как максимального, так и минимального элемента: def f_max(mas): .
Найти сумму максимального элемента расположенных на четных индексах и минимального элемента на нечетных
Помогите с решением задачи Задан одномерный целочисленный массив размером N. Требуется найти сумму.

как найти индекс второго подходящего элемента в последовательности
Здравствуйте! Помогите, пожалуйста, решить упражнение: нужно создать функцию, которая будет.
Найти индекс максимального элемента в указанной строке двухмерного массива
4) Разработать функцию, отыскивающую индекс максимального элемента в указанной строке двухмерного.

Найти индекс первого элемента массива, большего заданного числа
Спасибо что зашёл в эту тему :good: Ребят, я вам очень благодарен, что целый день мне помогали.
click fraud protection
Python — обширный язык; он имеет несколько доступных встроенных функций для списков. Одна из важных функций, которые мы хотим выполнить со списком в Python, — это найти индекс определенного элемента в списке для различных целей. В Python мы определяем индекс указанного элемента с помощью метода index (). В этой статье мы подробно обсудим, как получить позицию определенного элемента с помощью метода index () с различными сценариями.
Метод index () можно использовать в Python в любой операционной системе, но в этой статье мы обсудим его реализацию в Ubuntu (система Linux).
Требование
Любая версия Python, установленная на вашем Ubuntu (python3 предварительно установлен в последней версии Ubuntu).
Создание файла Python
Чтобы писать код на Python в Ubuntu, вы должны создать файл Python с расширением «.py» с помощью указанной ниже команды:
$ nano python_file. ру
Вы можете изменить имя файла.

Методы поиска индекса определенного элемента в списке в Python объясняются ниже:

Как найти позицию определенного элемента в списке Python:
Найдите индекс указанного элемента, который присутствует в списке, с помощью синтаксиса, указанного ниже:
список . показатель ( «элемент» , start_position , end_position )
список: Имя списка, в котором вы найдете индекс указанного элемента
элемент: Конкретный элемент, который нужно искать в списке
start_position (необязательно): Начать поиск элемента из этого индекса в списке
end_position (необязательно): Прекратить поиск этой позиции в списке
Пример 1: Как найти индекс определенного элемента, который присутствует в списке Python
Ниже указан синтаксис для поиска указанного элемента без дополнительных аргументов метода index ():
список . показатель ( «элемент» )
Чтобы получить индекс убунту в списке linux_OS, напишите указанный ниже код в «python_file.py»:
Распечатать ( «Найдите индекс /» убунту / «в списке /» linux_OS / » «)
linux_OS = [‘debian’, ‘ubuntu’, ‘centOS’, ‘Fedora’]
index = linux_OS.index (‘убунту’)
Распечатать(» Индекс указанного элемента является : «,показатель)

Чтобы получить желаемый результат, запустите «python_file.py» с помощью указанной ниже команды:
$ python3 python_file. ру

Пример 2: Как найти индекс элемента с более чем одним вхождением в списке Python
Если указанный элемент существует в списке более одного раза, тогда метод index () даст индекс его первого вхождения, чтобы найти индекс «ubuntu» в списке «linux_OS”напишите указанный ниже код в «python_file.py»:
Распечатать ( «Найдите индекс» Ubuntu «в списке \” linux_OS » «)
linux_OS = [‘debian’, ‘ubuntu’, ‘centOS’, ‘fedora’, ‘ubuntu’]
пытаться:
index = linux_OS.index (‘убунту’)
Распечатать(» Индекс указанного является : «,показатель)
кроме ValueError:
Распечатать(» Указанный элемент нет нашел !! «)

Чтобы получить желаемый результат, запустите «python_file.py» с помощью указанной ниже команды:
$ python3 python_file. ру

Приведенный выше вывод показывает, что метод index () дает первый индекс вхождения указанного элемента.
Пример 3: Как найти индекс элемента в списке с необязательными аргументами в списке Python
Мы можем найти индекс указанного элемента, указав начальный и конечный индекс в списке, как показано в приведенном ниже примере.
Чтобы найти индекс «Убунту» в списке «Linux_OS» между «index2» и «index5» напишите приведенный ниже код в «python_file.py»:
Распечатать ( «Найдите индекс /» убунту / «в списке /» linux_os / » между index2 а также index5 «)
linux_OS = [‘debian’, ‘ubuntu’, ‘centOS’, ‘fedora’, ‘ubuntu’]
пытаться:
индекс = linux_OS.index (‘убунту’, 2,5)
Распечатать(» Индекс указанного элемента является : «,показатель)
кроме ValueError:
Распечатать(» Указанный элемент нет нашел «)

Чтобы получить желаемый результат, запустите «python_file.py» с помощью указанной ниже команды:
$ python3 python_file. ру

Приведенный выше вывод дает индекс второго вхождения «ubuntu» в списке, поскольку он доступен между указанными индексами.
Что делать, если элемент отсутствует в списке Python
Если указанный элемент отсутствует в списке, то ValueError возникает исключение «значение не найдено», и нам нужно справиться с этимисключение с использованием «попробуйте кроме» блокировать
Напишите указанный ниже код в «python_file.py», чтобы найти индекс «Suse» в списке «linux_OS» без блока try except:
Распечатать ( «Найдите индекс /» Suse / «в списке /» linux_os / » «)
linux_OS = [‘debian’, ‘ubuntu’, ‘centOS’, ‘Fedora’]
index = linux_OS.index (‘Suse’)
Распечатать(» Индекс указанного элемента является : «,показатель)
Чтобы получить желаемый результат, запустите «python_file.py» с помощью указанной ниже команды:

Приведенный выше вывод дает Исключение «ValueError» поскольку элемент отсутствует в списке, но вам не о чем беспокоиться, обработайте исключение с помощью блока «try except».
Теперь снова напишите приведенный выше код с блоком «try except» для обработки исключения, как указано ниже:
Распечатать ( «Найдите индекс» Suse «в списке \” linux_OS » «)
linux_OS = [‘debian’, ‘ubuntu’, ‘centOS’, ‘Fedora’]
пытаться:
index = linux_OS.index (‘Suse’)
Распечатать(» Индекс указанного элемента является : «,показатель )
кроме ValueError:
Распечатать(» Указанный элемент нет нашел !! » )

Чтобы получить желаемый результат, запустите «python_file.py» с помощью указанной ниже команды:
$ python3 python_file. ру

Вам нужно вставить этот блок «попробуйте кроме» при использовании метода index ().
Заключение
В Python метод index () используется для поиска индекса указанного элемента. В этой статье обсуждается метод index (), который используется для поиска индекса указанного элемента с начальным и конечным индексами. (необязательно), и если элемент отсутствует, генерируется исключение, которое необходимо обработать с помощью команды «try except» блокировать. Эта статья поможет вам легко найти индекс списка и использовать индекс для нескольких целей в Python.
