Как узнать индекс двух одинаковых элементов в списке

У меня есть следующий список:

[1, 2, 3, 4, 1, 5]

Как мне получить все индексы числа 1


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

Автор решения: strawdog

пусть a - исходный список, num - число, которое мы ищем

Способ 1

a = [1,2,3,4,1,5]
num = 1
idx=[x[0] for x in enumerate(a) if x[1] == num]
print(idx)

[0, 4]

Способ 2

import numpy as np
a = [1,2,3,4,1,5]
num=1
idx = np.argwhere(np.array(a) == num).flatten()
print(idx)

[0 4]

→ Ссылка
Автор решения: Zmiter

Например для известного элемента так:

l = [1,2,3,4,1,5]
a = 1
for i, name in enumerate(i):
   if name = a:
   res.append(i)
print(res)
→ Ссылка
Автор решения: splash58

можно использовать метод count для отбора элементов, встречающихся два раза

lst = [1,2,3,4,1,5]
res = [i for i,x in enumerate(lst) if lst.count(x) == 2]
print(res)
[0,4]
→ Ссылка
Автор решения: Victor VosMottor thanks Monica

source :

>>> def duplicates(lst, item):
...   return [i for i, x in enumerate(lst) if x == item]
... 
>>> duplicates(List, "A")
[0, 2]
>>> dict((x, duplicates(List, x)) for x in set(List) if List.count(x) > 1)

{'A': [0, 2]}
>>> List.index("A")
0
>>> List.index("A", 1)
2
→ Ссылка
Автор решения: moondust

Можно пройтись по списку циклом for и после совпадения удалять нужный элемент, а его индекс добавлять в новый список. Но не нужно забывать, что после каждого удаления числа из списка индекс смещается на 1, поэтому нужно добавить счетчик(count)

lis = [1, 2, 3, 4, 1, 5, 1]
ind = [] 
count = 0
for f in lis:
    if f == 1:
        ind.append(lis.index(f) + count)
        lis.remove(f)
        count += 1
print(*ind)

Ну или же просто вместо индекса элемента можно добавлять число, на которое ссылается переменная count

lis = [1, 2, 3, 4, 1, 5, 1, 1, 1]
ind = []
count = 0
for f in lis:
    if f == 1:
        ind.append(count)
    count += 1
print(*ind)
→ Ссылка
Автор решения: CrazyElf

Для разнообразия ещё такой метод - поиск через index, начиная с указанной позиции:

arr = [1, 2, 3, 4, 1, 5]
n = 1
j = 0
while True:
    try:
        i = arr.index(n, j)
        print(i)
        j = i + 1
    except:
        break

Вывод:

0
4
→ Ссылка