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

标签 python list

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

[3, 3, 3, 3, 3, 3, 100, 1, 1, 1, 1, 1, 1, 200, 3, 3, 3, 100, 1, 1, 1]

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

[3, 6, 100, 1, 6, 200, 3, 3, 100, 1, 3]

其中 3 重复 6 次... 1重复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]

关于python - 替换 Python 列表中的重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661343/

相关文章:

python - 创建 App Engine 数据存储区实体

list - 使用 `take` 实现 Haskell 的 `foldl` 函数

Python 3,添加两个字典并在与两个字典都有的键关联的列表中添加项目

C:按字母顺序对列表进行排序

python - 如何在 selenium for python 中转义 xpath 1.0 中的单引号

python - ConfigObj 'un-nest' 部分

list - 获取Docker发布版本-安装所需的字符串

list - 方案:对列表末尾的持续访问?

python - 将 Pandas SparseDataframe 转换为 Scipy sparse csc_matrix

Python - 使用 gdal 编写栅格