For и метод index для списка

Допустим есть список:

mylist = [1,2,3,2,4,2,5,6,2,7,8,9]

как получить индекс каждого объекта '2' в списке при помощи цикла for и метода index


Ответы (3 шт):

Автор решения: Andy Pavlov

Согласен с 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
→ Ссылка
Автор решения: zaborschicov

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

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)
→ Ссылка