用Python替换列表中的重复元素?

Hee*_*esh 3 python list

例如,如果我有一个列表如下:

[3, 3, 3, 3, 3, 3, 100, 1, 1, 1, 1, 1, 1, 200, 3, 3, 3, 100, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

如何删除重复的元素并表示相同的元素,然后是重复的次数?示例输出:

[3, 6, 100, 1, 6, 200, 3, 3, 100, 1, 3]
Run Code Online (Sandbox Code Playgroud)

其中3重复6次...... 1重复6次......依此类推

Ash*_*ary 6

您可以itertools.groupby在此处使用生成器功能:

>>> from itertools import groupby                                              
>>> lst = [3, 3, 3, 3, 3, 3, 100, 1, 1, 1, 1, 1, 1, 200, 3, 3, 3, 100, 1, 1, 1]
>>> def solve(seq):
    for k, g in groupby(seq):
        length = sum(1 for _ in g)
        if length > 1:
            yield k
            yield length
        else:
            yield  k
...             
>>> list(solve(lst))
[3, 6, 100, 1, 6, 200, 3, 3, 100, 1, 3]
Run Code Online (Sandbox Code Playgroud)