Python. Почему одинаковые элементы в списке имеют одинаковый индекс?
def multiple_of_index(arr):
return [arr.index(i) for i in arr]
print (multiple_of_index([68, -1, 1, -7, 10, 10]))
Фактический результат: [0, 1, 2, 3, 4, 4] Ожидаемый результат: [0, 1, 2, 3, 4, 5]
- Почему одинаковые элементы в этом случае имеют одинаковый индекс?
- Как действовать чтобы получить правильные индексы?
Ответы (2 шт):
Автор решения: Mattern
→ Ссылка
Исходя из документации index():
Return the smallest i such that i is the index of the first occurrence of x in the array.
А значит одинаковый индекс у них потому что так делает функция index(elem) - возвращает минимальную позицию, на которой надохидтся elem.
Получить правильные индексы можно, например, так:
[i for i in range(len(your_list))]
Автор решения: finally
→ Ссылка
как только что отметил @andreymal, у вас в arr лежат две десятки. когда вы запрашиваете индекс десятки, функция index() возвращает индекс первой встреченной десятки.
чтобы получить правильные индексы, в вашем случае, достаточно просто вывести список длинны массива:
return list(range(len(arr)))