如何从列表中删除所有连续的相等元素?
例如:
[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中有更短的方法吗?
答案 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
粘在一起,你就会回到原来的可迭代状态。