Невозможность доступа к индексу элемента в перевернутом списке

#python

Вопрос:

У меня есть этот код, который я сделал для того, чтобы прокручивать список в обратном порядке. Мне нужно получить доступ к индексу каждого элемента, чтобы проверить, есть ли этот элемент ^ . Однако он отправляет сообщение об ошибке, указывающее TypeError: list indices must be integers or slices, not tuple на if строку. Что я могу сделать?

 equation = ['5', '^', '12', '^', '12'] for i in reversed(list(enumerate(equation))):  if equation[i] == '^':  ...  

Комментарии:

1. equation = ['5', '^', '12', '^', '12'][::-1] Проблема с временным значением !

2. @dsgdfg где мне это вставить в свой код?

3. друг , замени equation = ['5', '^', '12', '^', '12'] на equation = ['5', '^', '12', '^', '12'][::-1]

4. Будьте осторожны, работая с типами данных. если использовать глобальную функцию, возможно, это изменит ваш тип данных и индекс. equation = ['5', '^', '12', '^', '12'][::-1] затем for i in equation: ... do somathing

5. понял! я также использовал простое for i in range(equation): для цикла.

Ответ №1:

enumerate дает вам кортежи (индекс, элемент). Таким образом, ваш цикл должен выглядеть примерно так:

 for index, element in reversed(list(enumerate(equation))):  if element == '^':  equation[index] = ...  

Ответ №2:

Ваш дополнительный звонок list не требуется, дополнительно вы можете просто использовать len(...) и range(...) , как в:

 equation = ['5', '^', '12', '^', '12'] for index in range(len(equation) - 1, -1, -1):  if equation[index] == "^":  print("do sth.")  

Или

 for index, value in enumerate(reversed(equation)):  if value == "^":  print("sth.")