2013-09-21 64 views
0

如何從列表中刪除所有連續的相等元素?如何從列表中刪除所有連續的相等元素?

例如:

[1, 1, 2, 3, 2, 2, 4, 4, 5] 

應該成爲[1, 2, 3, 2, 4, 5]

old = [1, 1, 2, 3, 2, 2, 4, 4, 5] 
result = [] 
for e in old: 
    if len(result) == 0 or result[-1] != e: 
     result.append(e) 

我可以這樣做,但有較短的Python的方式?

回答

6

itertools具有對重複項目進行分組的功能,groupby

import itertools 

[item for item, repeats in itertools.groupby([1, 1, 2, 3, 2, 2, 4, 4, 5])] 
#>>> [1, 2, 3, 2, 4, 5] 

repeats是返回的部分,可迭代這樣的,如果你堅持所有的repeats第在一起,你會找回原來的迭代。

相關問題