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

如何在Python中实现保留顺序的字符串列表去重函数?

Python实现保留原顺序的列表去重函数

正确实现方式

用集合跟踪已出现元素的方法既高效又能保证完全去重,同时保留原列表的顺序:

def remove_duplicates(my_list):
    seen = set()
    result = []
    for item in my_list:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

逻辑说明

  • 用seen集合记录已经添加到结果列表的元素,集合的in操作时间复杂度为O(1),比直接在列表中判断更高效。
  • 遍历原列表时,仅当当前元素未在seen中出现过,才将其加入result并更新seen集合。

测试示例

my_list = ['a', 'b', 'c', 'b', 'd', 'a']
print(remove_duplicates(my_list))  # 输出: ['a', 'b', 'c', 'd']

关于你之前的方法

你提到用for循环遍历并判断元素是否在result列表中再添加的方法无法完全去重,大概率是代码逻辑出现了笔误(比如循环中错误修改了result或原列表)。如果你的代码是类似下面的写法,本身是可以正确去重的,只是效率较低(列表的in操作是O(n)):

# 可行但低效的写法
def remove_duplicates(my_list):
    result = []
    for item in my_list:
        if item not in result:
            result.append(item)
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:25:19