如果[j]是[j + 1]:IndexError:列表索引超出范围

时间:2015-06-16 12:38:50

标签: python

    n = int(input())
    a = []
    i=0
    for i in xrange(n) :
       a.append(raw_input())
    c=0
    j=0
    for j in range(0, len(a)) :
             if a[j] is a[j+1]  :
                  c=c+1
             else :
    print a[j-1], c
    c=0

当我在代码编辑器中运行此代码时,编译器会出错

   if a[j] is a[j+1]:
   IndexError: list index out of range

任何人都可以告诉我它的错误是什么?

4 个答案:

答案 0 :(得分:4)

问题是你超出了列表的长度。要将此更改len(a)修改为len(a)-1

for j in range(0, len(a)-1)

答案 1 :(得分:1)

如果您有list = [0, 1, 2, 3, 4]并且您运行for i in range(len(list)),则会i = 0转到i = 4list[4]为您提供4list[5] i+1不存在。

因此,在您的代码中,您应该将for j in range(0, len(a)) :更改为for j in range(len(a)-1):

此外,您不需要范围内的0,因为python会假设。{/ p>

答案 2 :(得分:1)

实际上,您不需要在for循环中添加0

for j in range(len(a)-1) :

这样会产生从0len(a)-2

的范围

答案 3 :(得分:0)

在python列表索引中从0开始。 因此,对于具有n个项目的列表,最后一个项目的索引将是[n-1]