Цикл в 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 находит индекс первого из них.