如何从列表中删除所有连续的相等元素?

时间:2013-09-21 21:18:40

标签: python python-2.7

如何从列表中删除所有连续的相等元素?

例如:

[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中有更短的方法吗?

1 个答案:

答案 0 :(得分: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粘在一起,你就会回到原来的可迭代状态。