Ошибка индексации вне границы для сравнения соседних чисел в списке - PullRequest
0 голосов
/ 30 октября 2018

Элемент списка

for i in num_list:
    if(i < len(num_list) - 1 and num_list[i] == num_list[i+1]):
        count = count + 1 
    else:
        count = count 

Я получаю индекс из связанной ошибки в условии if. В чем ошибка? Я использовал Лен, если условие

Ответы [ 2 ]

0 голосов
/ 30 октября 2018
for i in num_list:

не выполняет итерацию по длине / диапазону, а выполняет итерацию по значениям. Например

num_list = [3,4,1,5,3]
for i in num_list:
    print(i)

будет выводить

3
4
1
5
3

Вместо этого вы хотите перебрать индекс, и в этом случае ваш цикл foor должен выглядеть следующим образом:

for i in range(len(num_list)):

где следующий код

num_list = [3,4,1,5,3]
for i in num_list:
    print(i)

выдаст

0
1
2
3
4
0 голосов
/ 30 октября 2018

Ваша проблема в том, что значение i не является индексами списка, это фактические элементы в списке, по которым выполняется итерация.

Ваш оператор else в цикле также не нужен, поскольку он ничего не меняет.

Я думаю, что это завершает то, что вы ищете:

count = 0
num_list = [1, 2, 3, 3, 2, 1, 1]

for i in range(len(num_list) - 1):
    if(num_list[i] == num_list[i + 1]):
        count += 1 

print(count)
# Output: 2

range(len(num_list) - 1) будет перебирать все индексы, кроме последнего в списке. Так что проверка if, чтобы убедиться, что она не выходит за пределы, не является необходимой.

...