#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.")