← Все вопросы
Как найти ВСЕ индексы элемента в списке, а не только первый?
10
list.index(x) возвращает только первое вхождение. А мне нужны индексы всех вхождений значения, например все позиции числа 7 в [7, 1, 7, 3, 7].
3 ответа
19
✓ Принятый ответ — помог автору
Через enumerate и list comprehension:
nums = [7, 1, 7, 3, 7]
idx = [i for i, v in enumerate(nums) if v == 7]
print(idx) # [0, 2, 4]
enumerate даёт пары (индекс, значение), а условие отбирает только нужные. Это самый читаемый способ.
Владимир Елисеев Запомнил эту идиому на всю жизнь, постоянно нужна · 15 дней назад
4
Можно крутить index в цикле со стартовой позицией, но это и медленнее, и многословнее. Comprehension с enumerate — то, что нужно.
2
enumerate.
Ваш ответ
Войдите, чтобы ответить на вопрос.