Как узнать индекс двух одинаковых элементов в списке
У меня есть следующий список:
[1, 2, 3, 4, 1, 5]
Как мне получить все индексы числа 1
Ответы (6 шт):
пусть 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]
Например для известного элемента так:
l = [1,2,3,4,1,5]
a = 1
for i, name in enumerate(i):
if name = a:
res.append(i)
print(res)
можно использовать метод 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]
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
Можно пройтись по списку циклом 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)
Для разнообразия ещё такой метод - поиск через 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