Цикл в python, не получается правильно получить индексы выходного списка

Есть такие массивы:

r1 = [2, 2, -1, -1, -1, -1, -1, 2, 2, 2, -1]
t = [2, -1, -1, -1, -1, -1, 2, 2, 2, -1, -1]

Я их попарно вычел, получил:

er = [0, -3, 0, 0, 0, 0, 3, 0, 0, -3, 0]

А теперь хочу вывести индексы тех элементов, отличные от нуля, но выводит вот такое:

[1, 6, 1]

1 и 6 правильно, а почему в конце 1 тоже?

Код:

zc = []

r1 = r[:-1]
t = r[1:]

print(r1)
print(t)

er = [(t - r1) for t, r1 in zip(t, r1)]
print(er)

for i in er:
    if i != 0:
        zc.append(er.index(i))

print(zc)

Ответы (1 шт):

Автор решения: Patriot

Лучше всего в данном случае воспользоваться конструкцией for i in range(n):

for i in range(len(er)):
    if er[i] != 0:
        zc.append(i)

А в вашем коде вы получаете список с лишней, по вашему мнению, единицей в конце, ибо элементов, равных -3 в вашем списке несколько, и метод index находит индекс первого из них.

→ Ссылка