比较列表中相邻数字的索引越界错误

Index out of bound error for comparing adjacent numbers in list

列表项

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 条件下遇到索引越界错误。错误是什么?我在 if 条件

中使用了 len

你的问题是 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 检查以确保它没有越界是没有必要的。

for i in num_list:

不会迭代 length/range,而是迭代值。 例如

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