Списъкът е контейнер, който съхранява елементи от различни типове данни (ints, floats, Boolean, низове и т.н.) в подредена последователност. Това е важна структура от данни, която е вградена в Python. Данните се записват в квадратни скоби ([]) и стойностите се разделят със запетая (,).
Елементите в списъка се индексират с първия елемент, започващ от индекс 0. Можете да правите промени в създадения списък, като добавяте нови елементи или като актуализирате, изтривате съществуващите. Освен това може да има дублирани елементи и вложен списък.
В списъка има много методи, а от най-важния е index ().
В този урок ще научите:
- Индекс на списъка на Python ()
- Използване на for-loop за получаване на индекса на елемент в списък
- Използване на while-loop и list.index ()
- Използване на разбиране на списъка, за да се получи индексът на елемент в списък
- Използване на Enumerate за получаване на индекса на елемент в списък
- Използване на филтър за получаване на индекса на елемент в списък
- Използване на NumPy за получаване на индекса на елемент в списък
- Използване на more_itertools.locate () за получаване на индекса на елемент в списък
Индекс на списъка на Python ()
Методът list index () ви помага да намерите първия най-нисък индекс на дадения елемент. Ако в списъка има дублиращи се елементи, първият индекс на елемента се връща. Това е най-лесният и ясен начин за получаване на индекса.
Освен метода за вграден списък index (), можете да използвате и други начини за получаване на индекса, като например цикъл през списъка, като използвате разбиране на списъка, enumerate (), филтриране.
Методът list index () връща първия най-нисък индекс на дадения елемент.
Синтаксис
list.index(element, start, end)
Параметри
Параметри | Описание |
елемент | Елементът, който искате да получите индекса. |
старт | Този параметър не е задължителен. Можете да дефинирате индекса start: за търсене на елемента. Ако не е дадена, стойността по подразбиране е 0. |
край | Този параметър не е задължителен. Можете да посочите крайния индекс за елемента, който ще се търси. Ако не е дадено, то се разглежда до края на списъка. |
Върната стойност
Методът list index () връща индекса на дадения елемент. Ако елементът не присъства в списъка, методът index () ще изведе грешка, например ValueError: „Елемент“ не е в списъка.
Пример: За да намерите индекса на дадения елемент.
В списъка 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 2The 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 startindexprint("The index of element D is ", my_list.index('D', 1))
Изход:
The index of element C is 2The index of element F is 5The 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, inprint("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-loop и list.index ()
Използването на цикъл while ще премине през дадения списък, за да получи всички индекси на дадения елемент.
В списъка: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'], имаме нужда от всички индекси на елемент "Guru".
По-долу е даден пример, показващ как да получите всички индекси с помощта на while-loop
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']result = []elementindex = -1while True:try:elementindex = my_list.index('Guru', elementindex+1)result.append(elementindex)except ValueError:breakprint("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 npmy_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 locatemy_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]
Резюме:
- Методът list index () ви помага да намерите индекса на дадения елемент. Това е най-лесният и ясен начин за получаване на индекса.
- Методът list index () връща индекса на дадения елемент.
- Ако елементът не присъства в списъка, методът index () ще изведе грешка, например ValueError: 'Element' не е в списъка.
- Освен метода на вградения списък, можете да използвате и други начини за получаване на индекса, като прелистване на списъка, използване на разбиране на списъци, използване на enumerate (), използване на филтър и др
- Използване на for-loop и while-loop за получаване на множество индекси на даден елемент.
- За да получите всички индекси, бърз и ясен начин е да използвате разбирането на списъка в списъка.
- Разбиранията на списъците са функции на Python, които се използват за създаване на нови последователности.
- Те помагат за намаляване на по-дългите цикли и улесняват четенето и поддръжката на вашия код.
- Можете да използвате enumerate, за да получите всички индекси на елемента в списък.
- Функцията Enumerate () е вградена функция, достъпна с python. Той приема входа като обект, който може да се итерира (т.е. обект, който може да бъде циклиран), а изходът е обект с брояч на всеки елемент.
- Методът filter () филтрира дадения списък въз основа на дадената функция.
- Библиотеката Numpy се използва специално за масиви. Можете да използвате NumPy, за да получите индекса на елемента, даден в списъка.
- More_itertools.locate () е поредната библиотека на python, която помага да се намерят индексите на дадения списък.