/
Вопросы и ответы
/
Python
/

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

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

4 года назад

Andrey Moshkov

Ответы

5

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

Синтаксис:

1
sequence.index(x[, start[, end]])
  • sequence - это объект, элементы которого представляют собой некую индексированную последовательность (строка, список, кортеж). Каждый элемент последовательности имеет индекс - целое число, обозначающее его позицию в последовательности. Нумерация индексов начинается с 0 (нуля).
  • x - искомый элемент последовательности, чей наименьший индекс будет возвращен.
  • Необязательные аргументы start и end используются для ограничения поиска конкретной подпоследовательностью списка, путем задания среза. Возвращаемый индекс вычисляется относительно изначальной последовательности, а не среза, заданного start и end.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

4 года назад

Дмитрий Ибрагимов

0

index() — метод списка, строки и кортежа. Он возвращает позицию первого вхождения элемента:

1
2
fruits = ['яблоко', 'груша', 'слива', 'груша']
print(fruits.index('груша'))  # 1

Индексы в Python начинаются с нуля. Следующие вхождения index() не видит.

Если элемента нет

1
2
fruits.index('банан')
# ValueError: 'банан' is not in list

Проверьте наличие заранее:

1
2
3
4
if 'банан' in fruits:
    print(fruits.index('банан'))
else:
    print('Нет в списке')

Поиск в части списка

Второй и третий аргументы задают, с какой позиции искать и до какой:

1
print(fruits.index('груша', 2))  # 3 — поиск с индекса 2

Все вхождения

1
2
positions = [i for i, f in enumerate(fruits) if f == 'груша']
print(positions)  # [1, 3]

index() у строки

1
2
3
text = 'hello world'
print(text.index('o'))      # 4
print(text.index('world'))  # 6

У строк есть find(). Он ведёт себя как index(), но при отсутствии подстроки возвращает -1 без ошибки:

1
print(text.find('python'))  # -1

У списков метода find() нет.

Индекс максимального элемента

1
2
numbers = [3, 9, 4]
print(numbers.index(max(numbers)))  # 1

Скорость

index() перебирает элементы по очереди. На списке из миллиона элементов и частых поисках это медленно. Если нужно часто находить позицию, постройте словарь один раз:

1
pos = {f: i for i, f in enumerate(fruits)}

В словаре останется последняя позиция повторяющихся элементов.

Индексы в pandas

В pandas «индекс» — подписи строк таблицы df.index. Это другое понятие, с методом списка index() его не путайте.

Списки и строки разбирают в бесплатном курсе «Основы Python».

10 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845