Как найти номер элемента в списке питон
Перейти к содержимому

Как найти номер элемента в списке питон

  • автор:

Как найти индекс элемента в списках Python

toadmin.ru

В этом руководстве вы узнаете, как найти индекс элемента в списке Python, используя как простые итерации, так и встроенный метод списка index().

При работе со списками Python вам может понадобиться выяснить индекс, по которому встречается конкретный элемент. Вы можете сделать это:

  • Проходя по списку и проверяя, равен ли элемент по текущему индексу определенному значению
  • Использование встроенного метода списка index()

Вы узнаете оба из вышеперечисленного в этом уроке. Давайте начнем.����‍��

Пересмотренные списки Python

В Python список — это набор элементов одного или разных типов данных. Они изменчивы; вы можете изменить их на месте, не создавая новый список.

Рассмотрим этот пример фруктов: список из 5 разных фруктов.

fruits = ["apple","mango","strawberry","pomegranate","melon"]

Вы можете получить длину любого объекта Python, используя встроенную функцию len(). Таким образом, вы можете вызвать функцию len() с объектом списка (фрукты) в качестве аргумента, чтобы получить его длину, как показано ниже.

len(fruits) # Output: 5

Мы будем использовать список фруктов в качестве рабочего примера в этом уроке.

Индексирование в списках Python

Python следует нулевой индексации. Таким образом, в любом итерируемом объекте Python первый элемент имеет индекс 0, второй элемент — индекс 1 и так далее. Если длина итерации равна k, то последний элемент имеет индекс k – 1.

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

Примечание. Когда вы перебираете диапазон (k), вы получаете индексы 0,1,2,…, (k-1). Таким образом, установив k = len(list), вы можете получить список всех допустимых индексов.

Следующая ячейка кода объясняет это.

for i in range(len(fruits)): print(f"i:, fruit[] is ") # Output i:0, fruit[0] is apple i:1, fruit[1] is mango i:2, fruit[2] is strawberry i:3, fruit[3] is pomegranate i:4, fruit[4] is melon

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

Найдите индекс элемента списка по итерации с использованием циклов for

Рассмотрим список плодов из предыдущего раздела. Мы узнаем, как найти индекс определенного элемента в этом списке путем итерации, используя цикл for.

Использование функции for Loop и range()

Зафиксируем цель: значение, которое мы ищем в списке.

Вы можете использовать цикл for и функцию range(), чтобы получить список индексов от 0 до len(fruits) – 1.

  • Прокрутите список фруктов, обращающихся к каждому индексу.
  • Проверьте, равен ли элемент по текущему индексу i целевому.
  • Если True, вывести, что цель найдена по индексу i.
fruits = ["apple","mango","strawberry","pomegranate","melon"] target = "mango" for i in range(len(fruits)): if fruits[i] == target: print(f" found at index ") # Output mango found at index 1

В этом примере целевая строка «манго» появляется ровно один раз (в индексе 1) в списке фруктов.

Однако иногда целевое значение появляется несколько раз или вообще не отображается. Чтобы справиться с этими случаями, давайте изменим приведенный выше цикл и обернем содержимое внутри функции с именем find_in_list.

Понимание определения функции

Функция find_in_list имеет два параметра:

  • цель: значение, которое вы ищете, и
  • py_list: список Python, который вы ищете.
def find_in_list(target,py_list): target_indices = [] for i in range(len(fruits)): if fruits[i] == target: target_indices.append(i) if target_indices == []: print("Sorry, target not found!") else: print(f" is found at indices ")

В теле функции мы инициализируем пустой список target_indices. Мы прокручиваем список и получаем доступ к элементам списка. Если цель была найдена по определенному индексу, мы добавляем этот индекс в список target_indices с помощью метода append().

Примечание. В Python list.append(item) добавляет элемент в конец списка.

  • Если цель так и не найдена, то target_indices — это пустой список; пользователь уведомляется о том, что цель отсутствует в списке.
  • Если цель найдена более чем по одному индексу, то target_indices содержит все эти индексы.

Далее давайте переопределим список фруктов, как показано.

На этот раз мы ищем целевую строку ‘mango’, которая встречается дважды — с индексами 1 и 4.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" find_in_list(target,fruits) # Output mango is found at indices [1, 4]

При вызове функции find_in_list с аргументами target и Fruits мы видим, что возвращаются оба индекса.

target = "turnip" find_in_list(target,fruits) # Output Sorry, target not found!

Если вы попытаетесь найти «репу», которой нет в списке фруктов, вы получите сообщение о том, что цель не найдена.

Использование функции for Loop и enumerate()

В Python вы можете использовать функцию enumerate() для одновременного доступа к индексу и элементам без использования функции range().

В следующей ячейке кода показано, как можно использовать функцию enumerate() для получения как индексов, так и элементов.

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] for index,fruit in enumerate(fruits): print(f"Index : ") # Output Index 0: apple Index 1: mango Index 2: strawberry Index 3: pomegranate Index 4: mango Index 5: melon

Теперь давайте перепишем функцию Python, чтобы найти индекс элементов в списке, используя функцию enumerate().

def find_in_list(target,py_list): target_indices = [] for index, fruit in enumerate(fruits): if fruit == target: target_indices.append(index) if target_indices == []: print("Sorry, target not found!") else: print(f" is found at indices ")

Как и в предыдущем разделе, теперь вы можете вызывать функцию find_in_list с допустимыми аргументами.

Вы можете перевести приведенное выше определение функции в эквивалентное понимание списка, и мы сделаем это в следующем разделе.

Найдите индекс элемента списка по итерации, используя понимание списка

Понимание списков в Python позволяет создавать списки из существующих списков на основе некоторых условий. Вот общая конструкция:

new_list = [ for if ]

На рисунке ниже показано, как идентифицировать элементы понимания списка; используя это, вы можете преобразовать функцию find_in_list в понимание списка.

Используя приведенное выше, выражение для понимания списка для создания целевых индексов выглядит следующим образом.

target_indices = [index for index,fruit in enumerate(fruits) if fruit==target]

В качестве упражнения вы можете попробовать запустить приведенный выше фрагмент кода для нескольких других примеров.

Найти индекс элемента списка с помощью метода index()

Чтобы найти индекс элемента в списке Python, вы также можете использовать встроенный метод .index(). Вот общий синтаксис:

list.index(value,start,end)

Разбор вышеуказанного метода:

  • value — это целевое значение, которое вы ищете.
  • start и end — необязательные позиционные аргументы; вы можете использовать их для поиска индекса элемента в срезе списка, начиная с начала и до конца — 1.

Примечание. Метод .index() возвращает только индекс первого вхождения значения в список. Даже когда вы найдете индекс элемента в срезе списка [start: end-1]этот метод возвращает только индекс, соответствующий первому вхождению элемента.

Давайте вернемся к нашему примеру, чтобы понять, как работает метод .index().

fruits = ["apple","mango","strawberry","pomegranate","mango","melon"] target = "mango" fruits.index(target) 1

Несмотря на то, что в списке фруктов есть два вхождения «манго», вы можете видеть, что был возвращен только индекс первого вхождения.

Чтобы получить индекс второго вхождения манго, мы можем выполнить поиск в срезе списка, начиная с индекса 2 и дойдя до индекса 5, как показано ниже.

fruits.index(target,2,5) 4

Как обрабатывать ValueErrors в Python

Теперь давайте посмотрим, что произойдет, если вы попытаетесь найти индекс элемента, которого нет в списке, скажем, «морковь».

target = "carrot" fruits.index(target) # Output --------------------------------------------------------------------------- ValueError Traceback (most recent call last) in () 1 target = "carrot" 2 ----> 3 fruits.index(target) ValueError: 'carrot' is not in list

Как видно из приведенной выше ячейки кода, это создает ValueError. В Python вы можете обрабатывать это как исключение, используя блоки try и exclude.

Общий синтаксис для использования try-except следующий.

try: # to do this except : # do this to handle as exception

Используя приведенные выше блоки try-except, мы можем обрабатывать ValueError как исключение.

target = "carrot" try: fruits.index(target) except ValueError: print(f"Sorry, could not find in list") # Output Sorry, could not find carrot in list

Приведенный выше код делает следующее:

  • Если цель присутствует в списке, он возвращает индекс цели.
  • Если цель отсутствует, она обрабатывает ValueError как исключение и выводит сообщение об ошибке.

Подводя итоги

Вот краткое изложение различных методов, которые вы изучили, чтобы найти индекс элемента в списке Python.

  • Вы можете использовать функцию Python for loop и range() для получения элементов и их соответствующих индексов. Проверьте, соответствуют ли элементы в индексах цели.
  • Вы также можете использовать функцию enumerate() для одновременного доступа к элементу и индексу.
  • Вы можете использовать оба вышеупомянутых метода внутри выражения понимания списка.
  • Чтобы найти индекс элемента в списке, вы также можете использовать встроенный метод .index().
  • list.index(value) возвращает индекс первого вхождения значения в списке. Если значение отсутствует, возникает ошибка ValueError.
  • Вы можете выполнить поиск по определенному фрагменту списка, используя list.index(value, start, end) для поиска появления значения в фрагменте списка. [start:end-1].

Затем научитесь сортировать словарь Python по ключу или по значению. Удачного программирования на Python!

Что делает функция индекс в Python?

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

sequence.index(x[, start[, end]]) 
  • sequence — это объект, элементы которого представляют собой некую индексированную последовательность (строка, список, кортеж). Каждый элемент последовательности имеет индекс — целое число, обозначающее его позицию в последовательности. Нумерация индексов начинается с 0 (нуля).
  • x — искомый элемент последовательности, чей наименьший индекс будет возвращен.
  • Необязательные аргументы start и end используются для ограничения поиска конкретной подпоследовательностью списка, путем задания среза. Возвращаемый индекс вычисляется относительно изначальной последовательности, а не среза, заданного start и end.
str_seq = 'aebcdef' #Последовательность в виде строки print(str_seq.index('e')) # => 1 print(str_seq.index('e', 2)) # => 5 print(str_seq.index('k')) # => ValueError: substring not found lst_seq = ['a', 'e', 'b', 'c', 'd', 'e', 'f'] #Последовательность в виде списка print(lst_seq.index('b')) # => 2 print(lst_seq.index('k')) # => ValueError: 'k' is not in list tup_seq = ('a', 'e', 'b', 'c', 'd', 'e', 'f') #Последовательность в виде кортежа print(tup_seq.index('a')) # => 0 

Найти индекс всех вхождений элемента в списке Python

В этом посте будет обсуждаться, как найти индекс всех вхождений элемента в списке Python.

1. Использование enumerate() функция

Чтобы получить индекс всех вхождений элемента в список, вы можете использовать встроенную функцию enumerate() . Он был введен для решения задачи счетчика циклов и может использоваться следующим образом:

if __name__ == ‘__main__’ :
ints = [ 1 , 3 , 7 , 5 , 4 , 3 ]
for index , elem in enumerate ( ints ) :
if elem == item :
print ( f » is found at index » )
3 is found at index 1
3 is found at index 5

Чтобы получить список всех индексов сразу, используйте понимание списка с функцией перечисления:

if __name__ == ‘__main__’ :
ints = [ 1 , 3 , 7 , 5 , 4 , 3 ]
indexes = [ i for i , j in enumerate ( ints ) if j == item ]
print ( f «Item is found at index » )
# результат: Item 3 is found at index [1, 5]

2. Использование range() функция

В качестве альтернативы вы можете использовать range() функция, чтобы получить список всех допустимых индексов, а затем сопоставить соответствующее значение, присутствующее в каждом индексе, с данным элементом.

if __name__ == ‘__main__’ :
ints = [ 1 , 3 , 7 , 5 , 4 , 3 ]
indexes = [ i for i in range ( len ( ints ) ) if ints [ i ] == item ]
print ( f «Item is found at index » )
# результат: Item 3 is found at index [1, 5]

3. Использование itertools модуль

Другой подход заключается в использовании count() функционировать в itertools , который создает итератор для эффективного цикла, чтобы возвращать равномерно распределенные значения, начиная с заданного числа. Вы можете использовать его с zip() для добавления порядковых номеров следующим образом.

from itertools import count
if __name__ == ‘__main__’ :
ints = [ 1 , 3 , 7 , 5 , 4 , 3 ]
zipped = [ ( i , j ) for i , j in zip ( count ( ) , ints ) if j == item ]
print ( zipped )

4. Использование more_itertools модуль

The more-itertools библиотека предоставляет элегантные подпрограммы для работы с итерируемыми объектами Python. Вы можете использовать more_itertools.locate функция, которая возвращает индекс каждого элемента в итерируемом объекте, для которого выполняется заданный предикат. Ниже приведен простой пример, демонстрирующий использование этой функции:

Метод List.index в Python

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

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

Функция Index — это встроенный метод списка, который позволяет узнать индекс или позицию элемента в последовательности.

Другими словами, этот метод ищет элемент в списке и возвращает его индекс.

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

List_name.index()

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

Смотрите пример ниже.

myList = ['1', '11', 1, 'a', 'x', 1.1] myList.index(1) # 2 myList.index('x') # 4

Как работает функция Index()?

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

Этот метод ищет элемент в списке и возвращает индекс, соответствующий его значению, в противном случае возникает ошибка ValueError.

При поиске подстрок возникает следующая ошибка.

"Substring not found"
first = 'Python is the language of the future.' print(first.index('lang', 10)) # 14 print(first.index('invalid', 10))Traceback (most recent call last): File "", line 1, in print(first.index('invalid', 10)) ValueError: substring not found

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *