如何从列表中删除连续的重复项?

尔玛希

如何从python这样的列表中删除连续的重复项?

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

拥有唯一的列表或集合并不能解决问题,因为在先前的列表中有一些重复的值,例如1,...,1。

我希望结果是这样的:

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

当我有一个这样的列表[4, 4, 4, 4, 2, 2, 3, 3, 3, 3, 3, 3]并且我希望结果是[4,2,3,3]而不是时,也请考虑一下这种情况[4,2,3]

巴雷尔

itertools.groupby()是您的解决方案。

newlst = [k for k, g in itertools.groupby(lst)]

如果您希望通过项的值对分组大小进行分组和限制分组大小,这意味着8 4将是[4,4],而9 3将是[3,3,3],这里有2个选项可以做到这一点:

import itertools

def special_groupby(iterable):
    last_element = 0
    count = 0
    state = False
    def key_func(x):
        nonlocal last_element
        nonlocal count
        nonlocal state
        if last_element != x or x >= count:
            last_element = x
            count = 1
            state = not state
        else:
            count += 1
        return state
    return [next(g) for k, g in itertools.groupby(iterable, key=key_func)]

special_groupby(lst)

或者

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return itertools.zip_longest(*args, fillvalue=fillvalue)

newlst = list(itertools.chain.from_iterable(next(zip(*grouper(g, k))) for k, g in itertools.groupby(lst)))

选择您认为合适的任何一种。两种方法都适用于数字> 0。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Prolog中的列表中删除连续的重复项

来自分类Dev

从Java中的数组列表中删除连续的重复项

来自分类Dev

从2D列表中删除连续的重复项,python?

来自分类Dev

从Python的嵌套列表中删除连续的重复项?

来自分类Dev

Python从列表中删除N个连续的重复项

来自分类Dev

从2D列表中删除连续的重复项,python?

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何删除列表中的重复项(Raku)

来自分类Dev

如何从对象列表中删除重复项

来自分类Dev

如何从sql列表中删除重复项?

来自分类Dev

如何计算python列表中的连续重复项

来自分类Dev

删除连续字符中的重复项

来自分类Dev

删除Julia中连续的重复项

来自分类Dev

Lodash:从数组中删除连续的重复项

来自分类Dev

删除连续字符中的重复项

来自分类Dev

连续删除重复项

来自分类Dev

在列表中查找连续的重复项

来自分类Dev

删除列表中的重复项

来自分类Dev

一种删除列表中仅一个元素的连续重复项的Python方法

来自分类Dev

从列表中删除重复的连续元组?

来自分类Dev

如何从元组列表中删除重复项,但保持原始顺序

来自分类Dev

如何从对象列表中删除(通过linq)重复项

来自分类Dev

如何从未排序的链接列表中删除重复项

来自分类Dev

如何从序言列表中删除所有重复项

来自分类Dev

如何从字符串列表中删除重复项?

来自分类Dev

如何根据列表项中先前的发射删除重复项

来自分类Dev

删除列表列表中的重复项

来自分类常见问题

熊猫:删除连续的重复项

来自分类Dev

删除组的连续重复项