索引超出范围的bug

时间:2015-11-24 19:06:11

标签: python indexing

我正在尝试删除列表中的重复元素。当i的值转到9时,下面的代码表示索引超出范围。 9 + 1 = 10不在列表之外,我可以打印它,但每当我使用del时,它都会给我错误。这是不起作用的代码:

a = [12,12,34,34,56,11,32,32,11,10,10]
g = len(a)
for i in range(0,g-1):
    if a[i] == a[i+1]:
        del a[i]
print a

然而,反向逻辑,即我从10 - 1的值有效,但我从0 - 9不起作用。这个是反向逻辑。

a = [12,12,34,34,56,11,32,32,11,10,10]
g = len(a)
for i in range(g-1,0,-1):
    if a[i] == a[i-1]:
        del a[i]
print a

有人可以解释原因吗?

1 个答案:

答案 0 :(得分:3)

您正在删除列表中的元素,因此它会变短。 您应该创建一个新列表:

last = None
b = []
for value in a:
    if value != last:
        b.append(value)
    last = value