4
list=['a','a','x','c','e','e','f','f','f']

i=0
count = 0

while count < len(list)-2:
    if list[i] == list[i+1]:
        if list [i+1] != list [i+2]:
            print list[i]
            i+=1
            count +=1
        else:print "no"
    else:   
        i +=1
        count += 1

我越来越:

    else:print "no"
   ^
 IndentationError: unexpected indent

我正在尝试仅打印与以下元素匹配的 elts,而不是与该元素匹配的元素。我是 Python 新手,我不确定为什么这不起作用。

4

2 回答 2

7

这是固定的代码(count += 1在 else 子句之后添加一个以确保它终止):

list=['a','a','x','c','e','e','f','f','f']

i=0
count = 0

while count < len(list)-2:
    if list[i] == list[i+1]:
        if list [i+1] != list [i+2]:
            print list[i]
            i+=1
            count +=1
        else:
            print "no"
            count += 1
    else:   
        i +=1
        count += 1

使用itertools的更高级的解决方案更紧凑,更容易正确:

from itertools import groupby

data = ['a','a','x','c','e','e','f','f','f']
for k, g in groupby(data):
    if len(list(g)) > 1:
        print k
于 2013-05-19T03:51:51.497 回答
2

该代码对我有用,没有错误(尽管您陷入了循环)。确保您没有混合制表符和空格。

于 2013-05-19T03:50:38.977 回答