Python Списък index() с пример
Списъкът е контейнер, който съхранява елементи от различни типове данни (ints, float, Boolean, низове и т.н.) в подредена последователност. Това е важна структура от данни, която е вградена Python. Данните се записват в квадратни скоби ([]), а стойностите се разделят със запетая(,).
Елементите в списъка се индексират с първия елемент, започващ с индекс 0. Можете да правите промени в създадения списък чрез добавяне на нови елементи или чрез актуализиране, изтриване на съществуващите. Може също да има дублирани елементи и вложен списък.
В списъка има много налични методи, като най-важният е index().
Python Списък индекс()
Методът list index() ви помага да намерите първия най-нисък индекс на дадения елемент. Ако в списъка има дублирани елементи, се връща първият индекс на елемента. Това е най-лесният и ясен начин за получаване на индекса.
Освен вградения метод list index(), можете да използвате и други начини за получаване на индекса, като преминаване през списъка, използване на разбиране на списък, enumerate(), методи за филтриране.
Методът list index() връща първия най-нисък индекс на дадения елемент.
Синтаксис
list.index(element, start, end)
параметри
| параметри | Descriptйон |
|---|---|
| елемент | Елементът, който искате да получите индекса. |
| Начало | Този параметър не е задължителен. Можете да дефинирате start: индекса за търсене на елемента. Ако не е зададена, стойността по подразбиране е 0. |
| край | Този параметър не е задължителен. Можете да посочите крайния индекс за елемента, който ще се търси. Ако не е дадено, се счита до края на списъка. |
Връщана стойност
Методът list index() връща индекса на дадения елемент. Ако елементът не присъства в списъка, методът index() ще изведе грешка, например ValueError: 'Element' не е в списъка.
Пример: Да се намери индексът на дадения елемент.
В списъка 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-loop за получаване на индекса на елемент в списък
С метода list.index() видяхме, че той дава индекса на елемента, който се предава като аргумент.
Сега разгледайте списъка като: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] . Името „Гуру“ присъства 3 пъти в индекса и искам всички индекси с името „Гуру“.
Използвайки for-loop, трябва да можем да получим множеството индекси, както е показано в примера по-долу.
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', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', '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
Сега можете да използвате модула за локализиране в списък, както е показано по-долу в примера:
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]
Oбобщение
- Методът list index() ви помага да намерите индекса на дадения елемент. Това е най-лесният и ясен начин за получаване на индекса.
- Методът list index() връща индекса на дадения елемент.
- Ако елементът не присъства в списъка, методът index() ще изведе грешка, например ValueError: 'Element' не е в списъка.
- Освен вградения метод на списък, можете да използвате и други начини за получаване на индекса, като преминаване през списъка, използване на разбиране на списък, използване на enumerate(), използване на филтър и т.н.
- Използване на for-loop и while-loop за получаване на множество индекси на даден елемент.
- За да получите всички индекси, бърз и лесен начин е да използвате разбирането на списъка в списъка.
- Списъчните разбирания са Python функции, които се използват за създаване на нови последователности.
- Те помагат за намаляване на по-дългите цикли и правят вашия код по-лесен за четене и поддръжка.
- Можете да използвате enumerate, за да получите всички индекси на елемента в списък.
- Функцията Enumerate() е вградена функция, достъпна с python. Той приема вход като итерируем обект (т.е. обект, който може да бъде цикличен), а изходът е обект с брояч за всеки елемент.
- Методът filter() филтрира дадения списък въз основа на дадената функция.
- Библиотеката Numpy се използва специално за масиви. Можете да използвате NumPy, за да получите индекса на елемента, даден в списъка.
- more_itertools.locate() е още една библиотека на Python, която помага да се намерят индексите на дадения списък.
