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

4

1 回答 1

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是一个返回部分的迭代,这样如果你把所有的repeatss 粘在一起,你就会得到原来的迭代。

于 2013-09-21T21:20:20.253 回答