Вопрос по циклам и спискам
Новичок в питоне, только изучаю.
Нужно написать функцию с двумя входными параметрами (x,t),
где x - список целых чисел, t - целое число
Функция должна складывать попарно элементы списка x[] и сравнивать их сумму с t.
Если x[i] + x[i + 1] == t, то нужно удалить второй элемент x[i +1] из списка и продолжить. В конце функция должна вывести финальный измененный список. У меня получилось что-то вроде этого:
def trouble(x, t):
i = 0
while i < len(x):
if x[i] + x[(i + 1)] != t:
i += 1
else:
del x[i + 1]
return x
Я получаю ошибку index out of range на строчке с условием. Проблема в том, что в определенный момент при удалении элемента смещаются индексы, как я понимаю. Подскажите, как можно лучше решить эту проблемку? Пока не могу догнать.
Ответы (1 шт):
IndexError происходит на последней итерации когда i является последним элементом списка. И при попытке обратиться к элементу под индексом i + 1 мы выходим за границу списка. Поэтому цикл надо останавливать немного раньше
while i < len(x) - 1: