For и метод index для списка
Допустим есть список:
mylist = [1,2,3,2,4,2,5,6,2,7,8,9]
как получить индекс каждого объекта '2' в списке при помощи цикла for и метода index
Ответы (3 шт):
Согласен с MaxU, но если нужно через index(), то можно таким образом поступить.
index() имеет параметры list.index(element, start, end). Ищем первое вхождение, добавляем к его положению следующую позицию и ищем уже с нее.
mylist = [1,2,3,2,4,2,5,6,2,7,8,9]
search = 2
loc = 0
for _ in range(mylist.count(search)):
loc = mylist.index(search, loc)
print(loc)
loc += 1
В целом согласен со всеми людьми выше, но хотел бы продемонстрировать хороший метод, а также то, как решить задачу в поставленных условиях. Постараюсь расписать максимально подробно
mylist = [1, 2, 3, 2, 4, 2, 5, 6, 2, 7, 8, 9] #исходный список
sind = [] #множество индексов вхождения
el = 2 #искомый элемент
ind = 0 #индекс элементы
for _ in range(mylist.count(el)): #кол-во итераций - кол-во вхождений элемента в список
ind = mylist.index(el, ind) #первый аргумент - искомый элемент, второй - стартовый индекс
sind.append(ind) #добавляем индекс в список индексов
ind += 1 #прибавляем к индексу 1, что бы не проверять элемент, который уже найден
print(*sind) #эта функция распаковывает список как список аргументов
А теперь перейдём к "хорошему" решению
mylist = [1, 2, 3, 2, 4, 2, 5, 6, 2, 7, 8, 9] #исходный список
sind = [] #множество индексов вхождения
el = 2 #искомый элемент
for i in range(len(mylist)): #проходимся по всему списку
if mylist [i] == el: #проверяем элемент на сходство с искомым
sind.append(i) #добавляем индекс с искомым элементов в список
print(*sind) #эта функция распаковывает список как список аргументов
Но если совсем постараться.. То можно в одну строку!
mylist = [1, 2, 3, 2, 4, 2, 5, 6, 2, 7, 8, 9] #исходный список
el = 2 #искомый элемент
print(*[i for i in range(len(mylist)) if mylist[i] == el])
По факту это тоже самое что предыдущее решение, но думаю вам, как начинающему программисту, будет не лишним увидеть и данный вариант решения.
Удачи в изучение Pyhton!
Согласен с Andy Pavlov, но можно сократить ещё код, для уменьшения лишних строчек кода и удаления ненужной переменной
mylist = [1,2,3,2,4,2,5,6,2,7,8,9]
seacrh = 2
for i in range(len(mylist)):
if(mylist[i] == search): print(my list.index(search, i)