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

保拉

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

例如:

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

韦德拉克

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在一起,则会得到原始的可迭代对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章