You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除列表中的连续重复元素同时保留原有顺序

实现方法

方法1:手动迭代(无额外依赖,兼容性最好)

遍历原列表,仅当当前元素与结果列表最后一个元素不同时才追加,所有Python版本均可运行,也方便自定义调整逻辑。

def remove_consecutive_duplicates(lst):
    # 处理空列表边界情况
    if not lst:
        return []
    result = [lst[0]]
    for item in lst[1:]:
        if item != result[-1]:
            result.append(item)
    return result

# 测试
lst = ['a','a','b','a', 'a', 'c', 'c', 'c','d','e','a', 'b', 'b', 'b']
print(remove_consecutive_duplicates(lst))
# 输出:['a', 'b', 'a', 'c', 'd', 'e', 'a', 'b']

方法2:用标准库itertools.groupby(写法更简洁高效)

itertools.groupby默认会将连续出现的相同元素归为一组,直接取每组的key即可得到目标结果,性能优于手动迭代,适合处理长列表。

from itertools import groupby

lst = ['a','a','b','a', 'a', 'c', 'c', 'c','d','e','a', 'b', 'b', 'b']
result = [key for key, _ in groupby(lst)]
print(result)
# 输出:['a', 'b', 'a', 'c', 'd', 'e', 'a', 'b']

注意:不要提前给groupby传入排序后的列表,否则会移除全部重复元素,和set效果一致。

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:04