登录
首页 >  文章 >  python教程

列表推导式去重方法详解

时间:2026-02-21 11:46:51 378浏览 收藏

Python中去重看似简单,但不同方法的性能差异巨大:集合(set)凭借哈希实现实现接近O(n)的高效去重,而看似直观的列表推导式因线性查找导致O(n²)的低效;若还需保持原始顺序,Python 3.7+推荐使用dict.fromkeys()——它兼具哈希查找的速度优势与严格的插入顺序保证,是兼顾效率与功能的最优解。

python集合和列表推导式哪种方法去重快

在 Python 中,用集合(set)和列表推导式去重,集合去重更快。原因在于数据结构和时间复杂度的差异。

集合去重:高效且简洁

集合是哈希实现的,插入和查找平均时间复杂度为 O(1)。将列表转为集合会自动去除重复元素:

my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))

这种方法只遍历一次原列表,整体时间复杂度接近 O(n),效率高。

列表推导式去重:逻辑清晰但慢

如果用列表推导式配合条件判断去重,比如维护一个已见元素的列表:

seen = []
unique_list = [x for x in my_list if x not in seen and not seen.append(x)]

虽然能保持原始顺序,但 x not in seen 是对列表的线性查找,每次操作耗时 O(k),整体变成 O(n²),数据量大时明显变慢。

兼顾速度与顺序的推荐方法

如果需要保持顺序又追求性能,推荐使用 dict.fromkeys()

unique_list = list(dict.fromkeys(my_list))

字典从 Python 3.7 起保证插入顺序,且键的查找为 O(1),速度接近集合,还能保留元素首次出现的顺序。

基本上就这些:单纯去重选 set,要保序用 dict.fromkeys(),避免用列表推导式做重复检查。不复杂但容易忽略效率差别。

理论要掌握,实操不能落!以上关于《列表推导式去重方法详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>