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

Python中如何在保留元素顺序的同时去除列表重复项?

Python列表去重并保留原始顺序

你提到用set()去重会打乱元素顺序,这里有几个简单高效的实现方案:

方案1:使用Python 3.7+的dict.fromkeys()(推荐)

Python 3.7及以上版本中,字典会严格保留插入顺序,利用这个特性可以一行代码完成去重:

my_list = [1, 3, 2, 3, 1, 5, 2]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)  # 输出: [1, 3, 2, 5]

该方法时间复杂度为O(n),执行效率高,写法简洁。

方案2:手动遍历+集合记录已出现元素

如果需要兼容Python 3.7以下版本,可采用这种方式,同样能保证顺序且高效:

my_list = [1, 3, 2, 3, 1, 5, 2]
seen = set()
unique_list = []
for item in my_list:
    if item not in seen:
        seen.add(item)
        unique_list.append(item)
print(unique_list)  # 输出: [1, 3, 2, 5]

集合的in操作是O(1)复杂度,整体时间复杂度仍为O(n),性能表现优异。

为什么set()不适用?

set()本身是无序结构(Python 3.7之前完全无序,之后虽有插入顺序但不保证遍历顺序与原列表一致),转换为列表后必然打乱原始元素顺序,因此不适合需要保留顺序的去重场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:47:32