← Все вопросы

Как найти ВСЕ индексы элемента в списке, а не только первый?

Задан 1 месяц назад471 просмотров3 ответа
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.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект