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]

  1. Почему одинаковые элементы в этом случае имеют одинаковый индекс?
  2. Как действовать чтобы получить правильные индексы?

Ответы (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)))
→ Ссылка